Просмотр полной версии : С/С++ Вопрос - Ответ
BlackKnigga
22.11.2017, 12:54
Как прочесть запись в реестре (строку) если пункт с ней не именован?
Везде где учат читать строки у них есть название, так что гугл не помог
Запись приклеил к посту
NULL вместо названия
Alexkrat
24.11.2017, 21:49
https://forum.antichat.xyz/attachments/27168010/
Парни подскажите плиз ,что качать если я хочу писать скрипты для сампа и прочие проги не только на сампец?
Как можно реализовать автообновление программы с сервера ( допустим через проверку версии с .txt файла на сервере ). Если можно, киньте пример.
Как можно реализовать автообновление программы с сервера ( допустим через проверку версии с .txt файла на сервере ). Если можно, киньте пример.
InternetReadFile()
InternetReadFile()
А можно поподробнее, как можно выгрузить SF Plugin, удалить его, скачать новый и заменить?
BlackKnigga
25.11.2017, 22:02
А можно поподробнее, как можно выгрузить SF Plugin, удалить его, скачать новый и заменить?
Это неоправданно сложно, лучше просто уведомление об обнове сделать
Это неоправданно сложно, лучше просто уведомление об обнове сделать
Я планировал создавать батник, и через него уже производить все процессы.
itsLegend
25.11.2017, 22:44
Я планировал создавать батник, и через него уже производить все процессы.
Обычно, для замены файла, заменяемый файл не должен использоваться каким-либо процессом => тебе придется создавать батник, либо скачивать отдельный плагин, который будет скачивать и заменять файл.
kawa operand
27.11.2017, 19:32
Как загрузить библиотеку в процесс по ее hex коду
BlackKnigga
27.11.2017, 19:51
Как загрузить библиотеку в процесс по ее hex коду
А зачем так изощряться?
Loading a DLL from memory » ~magog/public(https://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/) (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cuam9hY2hpbS1iYXVjaC5kZS90dXRvcmlhbH MvbG9hZGluZy1hLWRsbC1mcm9tLW1lbW9yeS8)
Можешь посмотреть что нибудь в этом гайде, предварительно загрузив код библиотеки в память каким нибудь VirtualAlloc
Как загрузить библиотеку в процесс по ее hex коду
Мб ещё можно сувать код в файл, сохранять с разрешением длл и грузить в процесс
Как загрузить библиотеку в процесс по ее hex коду
https://www.mpgh.net/forum/showthread.php?t=1101356 (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cubXBnaC5uZXQvZm9ydW0vc2hvd3RocmVhZC 5waHA_dD0xMTAxMzU2)
У кого-то есть нормальный туториал для создание градиентного цвета на плюсах?
Dark_Knight
30.11.2017, 21:05
У кого-то есть нормальный туториал для создание градиентного цвета на плюсах?
Их в гугле овердохуя.
jenekbueno
01.12.2017, 19:55
Приветствую, подскажите пожалуйста параметры для входящего RPC_RequestSpawn, раклоггер не даёт)
нужно выцепить координаты спавна оттуда.
MISTER_GONWIK
01.12.2017, 20:07
Приветствую, подскажите пожалуйста параметры для входящего RPC_RequestSpawn, раклоггер не даёт)
нужно выцепить координаты спавна оттуда.
координаты спавна задаются сервером через SetSpawnInfo
jenekbueno
01.12.2017, 20:12
т.е в реквест спавне в принципе нет параметров? или какие есть?
упд: все разобрался, спасыч за ответ)
Пытался найти, как установить состояние клавиши, чтобы она считалась приложениями зажатой, но безуспешно.
Пытался найти какой-нибудь аналог функции getAsyncKeyState который устанавливает состояние, а не получает, но безуспешно. Функции что я пробовал "отпускают" клавишу моментально после использования.
Как создать имитацию физически зажатой клавиши -чтобы все приложения их считывающие поверили что она зажата?
Dark_Knight
05.12.2017, 02:19
SendInput не подходит?
SendInput не подходит?
А вот не знаю ещё, я не разобрался как его использовать.
Вернее, я не разобрался как правильно отправить структуру в структуре, со структурой внутри ._.
Если я просто ставил скобочки и в них, не указывая ни тип, ни название, чередовал нужные значения, то не принимало массивы ( а у меня работа в цикле фор, без массива как бы никак.). А пытаясь как-то озаглавить эти структуры, чтобы в них работали массивы, получал ошибки которые жаловались на попытки озаглавить структуры.
В общем не разобрался. Думал, может иные функции есть ._.
upd: вообще, я пытался отправить структуру не объявляя её, скорее всего это и есть ошибка. В луа же можно было таблицы прямо в функции изображать (во всяком случае в загрузке иника, как заполнение при создании)
Если бы ты мне показал как отослать несколько структур одна в одной, не объявляя их отдельно, было бы очень круто.
Впрочем, информация о том что это невозможно тоже была бы полезна, сделал бы как полагается, с инициализацией.
Какой offset и размер у структуры stMiscInfo > bClockEnabled?
Пытался найти, как установить состояние клавиши, чтобы она считалась приложениями зажатой, но безуспешно.
Пытался найти какой-нибудь аналог функции getAsyncKeyState который устанавливает состояние, а не получает, но безуспешно. Функции что я пробовал "отпускают" клавишу моментально после использования.
Как создать имитацию физически зажатой клавиши -чтобы все приложения их считывающие поверили что она зажата?
https://dl.prime-hack.net/AsiPlugin/AsiPlugin_29.11.2017_3.zip (https://www.blast.hk/redirect/aHR0cHM6Ly9kbC5wcmltZS1oYWNrLm5ldC9Bc2lQbHVnaW4vQX NpUGx1Z2luXzI5LjExLjIwMTdfMy56aXA)
sys/SRKeys - там есть код имитации нажатия клавиши
Camper36
11.12.2017, 08:57
Получил указатель на 99 строку чата , как его прочитать? VS2015 \ DLL библиотека.
BlackKnigga
11.12.2017, 17:26
Получил указатель на 99 строку чата , как его прочитать? VS2015 \ DLL библиотека.
Воспользоваться готовыми структурами сампа
кто нибудь делал патчер?
Не подскажите, с чего начать чтобы его сделать()))
BlackKnigga
11.12.2017, 18:27
кто нибудь делал патчер?
Не подскажите, с чего начать чтобы его сделать()))
Патчер чего?
Патчер чего?
возврата памяти точнее адресов
Их в гугле овердохуя.
На плюсы не нашёл ничего. Сложно дать примерчик или же ссылку на твоё "овердохуя"?
Dark_Knight
11.12.2017, 19:03
На плюсы не нашёл ничего. Сложно дать примерчик или же ссылку на твоё "овердохуя"?
30 секунд поиска
How to Create a Linear Gradient Brush (Windows)(https://msdn.microsoft.com/en-us/library/windows/desktop/dd756678(v=vs.85).aspx) (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicm FyeS93aW5kb3dzL2Rlc2t0b3AvZGQ3NTY2Nzgodj12cy44NSku YXNweA)
DirectXTutorial.com(http://www.directxtutorial.com/Lesson.aspx?lessonid=9-4-4) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5kaXJlY3R4dHV0b3JpYWwuY29tL0xlc3Nvbi 5hc3B4P2xlc3NvbmlkPTktNC00)
можно ли как нибудь отследить какие адреса меняет (или нопит) samp.dll в gta_sa.exe при заходе на сервер?
iAmerican
14.12.2017, 21:14
Почему выдает какие то жуткие числа? Не собейт. И это идентично функции PEDSELF->GetPosition() ? Которая в SF.
Ниже функа рабочая.
Вообщем мне надо сравнивать мои координаты и координаты игроков в стриме , ну и выдавать ближайщего ко мне по дистанции. Но если сажусь в кар , это не работает(
Можно это вообще организовать с помощью структур , или надо подключать CPed ещё?
Или это чуть другое , не очень понимаю с этими матрицами.
C++:
[
20
:
09
:
13
]
0.000000
-
0.000000
88603735423488851075027746212343614186660369281342 81830546756667434237182274693891083415098934269354 93491309880923201857534948968510119855140827330019 46333361503985920724537560737017568135505769628248 85149621290015516378865438532387728927975122090896 98207891456.000000
[
20
:
09
:
13
]
0.000000
-
0.000000
88603735423488851075027746212343614186660369281342 81830546756667434237182274693891083415098934269354 93491309880923201857534948968510119855140827330019 46333361503985920724537560737017568135505769628248 85149621290015516378865438532387728927975122090896 98207891456.000000
C++:
float
*
xX
;
float
*
yY
;
float
*
zZ
;
try
{
xX
=
&
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
]
;
yY
=
&
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
+
1
]
;
zZ
=
&
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
+
2
]
;
addMessageToChat
(
-
1
,
"%f %f %f"
,
&
xX
,
&
yY
,
&
zZ
)
;
}
catch
(
int
f
)
{
addMessageToChat
(
-
1
,
"%i"
,
f
)
;
}
C++:
[CODE]
short
GetNearestPlayerID
(
)
{
//CVector *pos, *spos; // pos - позиция игрока, spos - наша позиция
float
distance
;
// дистанция
float
testing
=
0xFFFFFFFF
;
uint16_t
nearestId
=
-
1
;
for
(
uint16_t
it
=
0
;
it
iIsListed
[
it
]
!=
1
)
continue
;
if
(
g_Players
->
pRemotePlayer
[
it
]
==
NULL
)
continue
;
if
(
(
g_Players
->
pRemotePlayer
[
it
]
->
pPlayerData
==
NULL
||
g_Players
->
pRemotePlayer
[
it
]
->
pPlayerData
->
pSAMP_Actor
==
NULL
)
)
continue
;
if
(
g_Players
->
pRemotePlayer
[
it
]
->
pPlayerData
->
iShowNameTag
!=
0
)
{
distance
=
GetDistanceXYZ
(
g_Players
->
pRemotePlayer
[
it
]
->
pPlayerData
->
fOnFootPos
[
0
]
,
g_Players
->
pRemotePlayer
[
it
]
->
pPlayerData
->
fOnFootPos
[
1
]
,
g_Players
->
pRemotePlayer
[
it
]
->
pPlayerData
->
fOnFootPos
[
2
]
,
g_Players
->
pLocalPlayer
->
onFootData
.
fPosition
[
0
]
,
g_Players
->
pLocalPlayer
->
onFootData
.
fPosition
[
1
]
,
g_Players
->
pLocalPlayer
->
onFootData
.
fPosition
[
2
]
)
;
// сравниваем
if
(
distance
BlackKnigga
14.12.2017, 21:18
Почему выдает какие то жуткие числа? Не собейт. И это идентично функции PEDSELF->GetPosition() ? Которая в SF.
Или это чуть другое , не очень понимаю с этими матрицами.
C++:
[
20
:
09
:
13
]
0.000000
-
0.000000
88603735423488851075027746212343614186660369281342 81830546756667434237182274693891083415098934269354 93491309880923201857534948968510119855140827330019 46333361503985920724537560737017568135505769628248 85149621290015516378865438532387728927975122090896 98207891456.000000
[
20
:
09
:
13
]
0.000000
-
0.000000
88603735423488851075027746212343614186660369281342 81830546756667434237182274693891083415098934269354 93491309880923201857534948968510119855140827330019 46333361503985920724537560737017568135505769628248 85149621290015516378865438532387728927975122090896 98207891456.000000
C++:
float
*
xX
;
float
*
yY
;
float
*
zZ
;
try
{
xX
=
&
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
]
;
yY
=
&
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
+
1
]
;
zZ
=
&
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
+
2
]
;
addMessageToChat
(
-
1
,
"%f %f %f"
,
&
xX
,
&
yY
,
&
zZ
)
;
}
catch
(
int
f
)
{
addMessageToChat
(
-
1
,
"%i"
,
f
)
;
}
Ты не разыменовываешь, а берешь ссылку
И зачем ты вообще юзаешь указатели?
iAmerican
14.12.2017, 21:22
Ты не разыменовываешь, а берешь ссылку
И зачем ты вообще юзаешь указатели?
Если делать так , то вообще крашит моментально . Прочти пост повыше, я там чуть дополнил
C++:
float
xX
;
float
yY
;
float
zZ
;
try
{
xX
=
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
]
;
yY
=
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
+
1
]
;
zZ
=
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
+
2
]
;
addMessageToChat
(
-
1
,
"%f %f %f"
,
xX
,
yY
,
zZ
)
;
}
catch
(
int
f
)
{
addMessageToChat
(
-
1
,
"%i"
,
f
)
;
}
BlackKnigga
14.12.2017, 21:27
Если делать так , то вообще крашит моментально . Прочти пост повыше, я там чуть дополнил
C++:
float
xX
;
float
yY
;
float
zZ
;
try
{
xX
=
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
]
;
yY
=
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
+
1
]
;
zZ
=
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
base
.
matrix
[
4
*
3
+
2
]
;
addMessageToChat
(
-
1
,
"%f %f %f"
,
xX
,
yY
,
zZ
)
;
}
catch
(
int
f
)
{
addMessageToChat
(
-
1
,
"%i"
,
f
)
;
}
Что то в этой цепочке может быть нулем.
И если садишься в кар то и координаты надо брать кара.
iAmerican
14.12.2017, 21:31
Что то в этой цепочке может быть нулем.
И если садишься в кар то и координаты надо брать кара.
В каком смысле нулем?
BlackKnigga
14.12.2017, 21:34
В каком смысле нулем?
Не хранить в себе адрес элемента на который должен указывать, грубо говоря.
В твоём первом посте в функции есть проверка каждого элемента на валидность.
iAmerican
14.12.2017, 21:37
Не хранить в себе адрес элемента на который должен указывать, грубо говоря.
В твоём первом посте в функции есть проверка каждого элемента на валидность.
Понял , только как может быть что координата будет равно нулю?)) Че то бред какой то , но щас проверю
BlackKnigga
14.12.2017, 21:44
Понял , только как может быть что координата будет равно нулю?)) Че то бред какой то , но щас проверю
Не координата, а какой нибудь элемент. Короче если стоишь - юзай онфут, в машине - инкар
Понял , только как может быть что координата будет равно нулю?)) Че то бред какой то , но щас проверю
Он говорит про разыменование нулевого указателя и, как следствие, неопределённое поведение.
vasiliy130198
15.12.2017, 17:07
Подскажите пожалуйста.. Использую imGUI. Возможно ли с помощью него рисовать текст и фигуры вне самого окна? Вчера скачал проект и, изучив его немного, думаю что нельзя так..
Если это так, то что тогда можно использовать для этого дела? Если есть что-то по типу этого imGUI -- вообще прекрасно)
BlackKnigga
15.12.2017, 17:51
Подскажите пожалуйста.. Использую imGUI. Возможно ли с помощью него рисовать текст и фигуры вне самого окна? Вчера скачал проект и, изучив его немного, думаю что нельзя так..
Если это так, то что тогда можно использовать для этого дела? Если есть что-то по типу этого imGUI -- вообще прекрасно)
DirectX
CleanLegend
15.12.2017, 19:23
Подскажите пожалуйста.. Использую imGUI. Возможно ли с помощью него рисовать текст и фигуры вне самого окна? Вчера скачал проект и, изучив его немного, думаю что нельзя так..
Если это так, то что тогда можно использовать для этого дела? Если есть что-то по типу этого imGUI -- вообще прекрасно)
Функция:
C++:
void
DrawRect
(
LPDIRECT3DDEVICE9 Device_t
,
int
X
,
int
Y
,
int
L
,
int
H
,
D3DCOLOR color
)
{
D3DRECT rect
=
{
X
,
Y
,
X
+
L
,
Y
+
H
}
;
Device_t
->
Clear
(
1
,
&
rect
,
D3DCLEAR_TARGET
,
color
,
0
,
0
)
;
}
Закидываешь туда где рисуешь
C++:
DrawRect
(
pDevice
,
X
,
Y
,
10
,
10
,
0xFF00FF00
)
;
В чем тут проблема?
Переделал код из SF API в консольное приложение C++, в SF API не работает вообще, а в консольном приложении ошибку выбивает.
Не могу вернуть значение массива по указателю, плохо тему указателей и ссылок понял.
Код:
C++:
[CODE]
#include "stdafx.h"
#include
using
namespace
std
;
void
Test
(
char
*
&
abc
)
{
abc
=
"YOOB"
;
}
void
main
(
)
{
char
*
abc
=
(
char
*
)
malloc
(
256
)
;
Test
(
abc
)
;
cout
xbKTSU6.png_Vine_ · 16 Дек 2017 в 18:20' data-fancybox="lb-post-171952" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fi.imgur.com%2FxbKTSU 6.png&hash=343e54b943f9a65372cfe28f61def2a3" style="cursor: pointer;" title="xbKTSU6.png">
https://i.imgur.com/xbKTSU6.png
kawa operand
16.12.2017, 20:13
C++:
[CODE]
void
foo
(
char
*
&
message
)
{
message
=
"hello world"
;
}
int
main
(
)
{
char
*
buffMessage
;
foo
(
buffMessage
)
;
std
::
cout
зы: за using namespace std; пальцы отрубают
Dark_Knight
16.12.2017, 21:16
зы: за using namespace std; пальцы отрубают
Схуяли? И зачем юзать чары, когда есть std::string?
kawa operand
16.12.2017, 22:11
Схуяли
Зачем подключать все пространство имен для одного cout ?
И зачем юзать чары
он просил пример с чар массивом
[QUOTE="kewa opcode"]
C++:
[CODE]
void
foo
(
char
*
&
message
)
{
message
=
"hello world"
;
}
int
main
(
)
{
char
*
buffMessage
;
foo
(
buffMessage
)
;
std
::
cout
vasiliy130198
17.12.2017, 06:03
Как в ImGUI рендерить картинку? Поиск "ImGui::Image" в поисковике ни к чему не привёл(
И, если можно пожалуйста, рендер этой же картинки уже средствами DirectX (чтобы она была не в окне imgui, а в любом месте на экране) :-[
Думаю хоть какой-то пример сможет помочь не только мне
Спасибо заранее) :thank_you:
CleanLegend
17.12.2017, 14:21
Как в ImGUI рендерить картинку? Поиск "ImGui::Image" в поисковике ни к чему не привёл(
И, если можно пожалуйста, рендер этой же картинки уже средствами DirectX (чтобы она была не в окне imgui, а в любом месте на экране) :-[
Думаю хоть какой-то пример сможет помочь не только мне
Спасибо заранее) :thank_you:
Перегоняешь картинку в массив байт, задаешь переменную, инициализируешь, рисуешь
Dark_Knight
17.12.2017, 15:11
Как в ImGUI рендерить картинку? Поиск "ImGui::Image" в поисковике ни к чему не привёл(
И, если можно пожалуйста, рендер этой же картинки уже средствами DirectX (чтобы она была не в окне imgui, а в любом месте на экране) :-[
Думаю хоть какой-то пример сможет помочь не только мне
Спасибо заранее) :thank_you:
C++:
stTextureInfo
*
texture
;
ImGui
::
Image
(
(
void
*
)
texture
->
pTexture
,
ImVec2
(
40
,
40
)
)
;
Конечно переменная texture должна быть иницилизированная
Как вернуть значение из потока?
Например:
C++:
void
getText
(
int
*
&
val
)
{
*
val
=
5
;
}
void
main
(
)
{
int
val
=
2
;
DeleteObject
(
CreateThread
(
0
,
0
,
(
LPTHREAD_START_ROUTINE
)
getText
,
&
val
,
0
,
0
)
)
;
printf
(
"%d\n"
,
val
)
;
}
Должно вывести в консоль 5, но выводит 2.
kawa operand
17.12.2017, 20:35
val = 5
Как вернуть значение из потока?
Например:
C++:
void
getText
(
int
*
&
val
)
{
*
val
=
5
;
}
void
main
(
)
{
int
val
=
2
;
DeleteObject
(
CreateThread
(
0
,
0
,
(
LPTHREAD_START_ROUTINE
)
getText
,
&
val
,
0
,
0
)
)
;
printf
(
"%d\n"
,
val
)
;
}
Должно вывести в консоль 5, но выводит 2.
вообще какой то бред делаешь.
vasiliy130198
17.12.2017, 20:54
C++:
stTextureInfo
*
texture
;
ImGui
::
Image
(
(
void
*
)
texture
->
pTexture
,
ImVec2
(
40
,
40
)
)
;
Конечно переменная texture должна быть иницилизированная
stTextureInfo - это структура внутри SF, который я не использую в своем проекте.. Есть вариант без него показать картинку через ImGui::Image из папки гта?
BlackKnigga
17.12.2017, 21:12
stTextureInfo - это структура внутри SF, который я не использую в своем проекте.. Есть вариант без него показать картинку через ImGui::Image из папки гта?
IDirect3DTexture9
Как вернуть значение из потока?
Например:
C++:
void
getText
(
int
*
&
val
)
{
*
val
=
5
;
}
void
main
(
)
{
int
val
=
2
;
DeleteObject
(
CreateThread
(
0
,
0
,
(
LPTHREAD_START_ROUTINE
)
getText
,
&
val
,
0
,
0
)
)
;
printf
(
"%d\n"
,
val
)
;
}
Должно вывести в консоль 5, но выводит 2.
Поток может выполнится и после printf'а. И передаешь ссылку неправильно. И хер пойми зачем какой то DeleteObject юзаешь.
Вообще используй глобалки и не парься.
BlackKnigga
17.12.2017, 21:33
C++:
pSAMP
=
new
gg
(
GetModuleHandleA
(
"samp.dll"
)
)
;
При выгрузке из игры dll, из за pSAMP крашит, как правильно выгрузить?
И что можно понять по твоей строчке?
Какой dll? Что в gg?
BlackKnigga
17.12.2017, 21:41
gg *pSAMP = new gg(GetModuleHandleA("samp.dll"));;
мой хак в формате dll, gg - класс со структурами.
я хочу его выгрузить по нажатию клавиши
Из твоей немногословности могу посоветовать только delete pSAMP в DLL_PROCESS_DETACH
BlackKnigga
17.12.2017, 22:01
@lol123 (https://www.blast.hk/members/268/)
Вообще ничего не дал мне этот отрывок.
Как тебе помочь если ты не можешь код дать? Он тут энивей никому не нужен
jenekbueno
18.12.2017, 00:30
как получить ид машины на которой стоишь?
пытался в исходящем ID_PLAYER_SYNC хукнуть sSurfingVehicleID, но там всегда значение равно нулю.
как получить ид машины на которой стоишь?
пытался в исходящем ID_PLAYER_SYNC хукнуть sSurfingVehicleID, но там всегда значение равно нулю.
SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData.sSurfingVehicleID;
jenekbueno
18.12.2017, 12:26
да, все понял теперь, если за рулем тачки на которой стоишь никто не сидит, то будет всегда 0 равняться, а если уже кто то сел, то все как надо отображает.
vasiliy130198
27.12.2017, 07:15
При рендере (directX) двух и больше картинок начинает зависать игра.. Как можно этого избежать, если мне нужно будет одновременно рендерить 3+ штук?
Пытался весь код из ф-ции Present перекинуть в отдельную, создаваемую потоком -- в игре ни одна не рендерится..
BlackKnigga
27.12.2017, 09:47
При рендере (directX) двух и больше картинок начинает зависать игра.. Как можно этого избежать, если мне нужно будет одновременно рендерить 3+ штук?
Пытался весь код из ф-ции Present перекинуть в отдельную, создаваемую потоком -- в игре ни одна не рендерится..
Криво рисуешь мб.
Пытался весь код из ф-ции Present перекинуть в отдельную, создаваемую потоком -- в игре ни одна не рендерится..
Так вообще нельзя делать, все рендерится только между BeginScene и EndScene.
При рендере (directX) двух и больше картинок начинает зависать игра.. Как можно этого избежать, если мне нужно будет одновременно рендерить 3+ штук?
Пытался весь код из ф-ции Present перекинуть в отдельную, создаваемую потоком -- в игре ни одна не рендерится..
Плюсую ответ книги. Ты делаешь что-то не так. У меня каждый asi плагин рисует минимум по 5 изображений и норм
vasiliy130198
28.12.2017, 09:16
Плюсую ответ книги. Ты делаешь что-то не так. У меня каждый asi плагин рисует минимум по 5 изображений и норм
Тогда если не секрет, как именно рисуется изображение через сам SF? Через другой поток, или в основном -- перед вызовом EndScene() ?
Вот как раз по такому примеру, как вот тут: SA-MP-Plus/CD3D9DeviceProxy.cpp at master · Hual/SA-MP-Plus · GitHub(https://github.com/Hual/SA-MP-Plus/blob/master/Client/Proxy/CD3D9DeviceProxy.cpp#L222) (https://github.com/Hual/SA-MP-Plus/blob/master/Client/Proxy/CD3D9DeviceProxy.cpp#L222)
... нужно делать, чтобы не лагала игра при рендере нескольких изображений? :scratch:
(Интересует где именно нужно инициализировать текстуру, и где рисовать. Инициализировать нужно же каждый раз, и после рисовать, так?)
Главное ответьте пожалуйста насчёт ссылки выше -- там правильная реализация рендера, как говорили выше, или не совсем?
Заранее спасибо) :drink:
Тогда если не секрет, как именно рисуется изображение через сам SF? Через другой поток, или в основном -- перед вызовом EndScene() ?
Вот как раз по такому примеру, как вот тут: SA-MP-Plus/CD3D9DeviceProxy.cpp at master · Hual/SA-MP-Plus · GitHub(https://github.com/Hual/SA-MP-Plus/blob/master/Client/Proxy/CD3D9DeviceProxy.cpp#L222) (https://github.com/Hual/SA-MP-Plus/blob/master/Client/Proxy/CD3D9DeviceProxy.cpp#L222)
... нужно делать, чтобы не лагала игра при рендере нескольких изображений? :scratch:
(Интересует где именно нужно инициализировать текстуру, и где рисовать. Инициализировать нужно же каждый раз, и после рисовать, так?)
Главное ответьте пожалуйста насчёт ссылки выше -- там правильная реализация рендера, как говорили выше, или не совсем?
Заранее спасибо) :drink:
Инициализируй текстуру в конструкторе и рисуй в Present
andrejmalvaro
28.12.2017, 18:28
есть ли RPC который уведомляет игрока о смене виртуального мира?
BlackKnigga
28.12.2017, 20:39
есть ли RPC который уведомляет игрока о смене виртуального мира?
В R2 вроде появился, но это не точно
Как использовать этот опкод в SF API?
CLEO:
0B21:
samp is_chat_opened
randazzo
29.12.2017, 00:17
Как использовать этот опкод в SF API?
CLEO:
0B21:
samp is_chat_opened
C++:
if
(
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
)
{
}
vasiliy130198
29.12.2017, 08:08
Можете пожалуйста подсказать названия проектов, в которые встроен рендер текста и изображений? Исходники которых где-то есть, конечно же)
Из всех найденных проектов на данный момент у меня никак не получается красиво вырезать его в свой ;(:wall:
Что еще вообще есть, кроме собейтов, SAMP+ и Asi-Plugin..?
Или может у кого-то завалялся написанный проект с рендером, то можно в его копии удалить всё кроме нужных мне файлов, и поделиться архивчиком.. Буду очень благодарен за это
CleanLegend
29.12.2017, 08:19
Можете пожалуйста подсказать названия проектов, в которые встроен рендер текста и изображений? Исходники которых где-то есть, конечно же)
Из всех найденных проектов на данный момент у меня никак не получается красиво вырезать его в свой ;(:wall:
Что еще вообще есть, кроме собейтов, SAMP+ и Asi-Plugin..?
Или может у кого-то завалялся написанный проект с рендером, то можно в его копии удалить всё кроме нужных мне файлов, и поделиться архивчиком.. Буду очень благодарен за это
Найди любой класс d3d9 render в интернете, по изучай их и попытайся подключить.
MISTER_GONWIK
29.12.2017, 09:49
В R2 вроде появился, но это не точно
в 0.3.8 только появилось
vasiliy130198
30.12.2017, 06:05
Нашел здесь на форуме функцию определения игровых координат для каждого экрана компа:
C++:
[CODE]
int
resolution
[
2
]
;
SF
->
getGame
(
)
->
getScreenResolution
(
&
resolution
[
0
]
,
&
resolution
[
1
]
)
;
kX
=
resolution
[
0
]
/
640
;
kY
=
resolution
[
1
]
/
448
;
SF
->
getRender
(
)
->
DrawBorderedBox
(
pos1
*
kX
,
pos2
*
kY
,
size1
*
kX
,
size2
*
kY
,
D3DCOLOR_ARGB
(
255
,
0
,
0
,
0
)
,
3
,
D3DCOLOR_ARGB
(
50
,
255
,
255
,
255
)
)
;
// 0
За kX и kY понятно, это int (так же как и resolution[2]).. А откуда именно берётся pos1 и pos2 тогда?
И эта функция определяет одинаково пропорциональные координаты на любом разрешении экрана, так? Тоесть при разрешении 1360х768, и 1024x768 точка будет по центру экрана всегда.
CleanLegend
30.12.2017, 12:08
[QUOTE="vasiliy130198"]
Нашел здесь на форуме функцию определения игровых координат для каждого экрана компа:
C++:
[CODE]
int
resolution
[
2
]
;
SF
->
getGame
(
)
->
getScreenResolution
(
&
resolution
[
0
]
,
&
resolution
[
1
]
)
;
kX
=
resolution
[
0
]
/
640
;
kY
=
resolution
[
1
]
/
448
;
SF
->
getRender
(
)
->
DrawBorderedBox
(
pos1
*
kX
,
pos2
*
kY
,
size1
*
kX
,
size2
*
kY
,
D3DCOLOR_ARGB
(
255
,
0
,
0
,
0
)
,
3
,
D3DCOLOR_ARGB
(
50
,
255
,
255
,
255
)
)
;
// 0
Можете пожалуйста подсказать названия проектов, в которые встроен рендер текста и изображений? Исходники которых где-то есть, конечно же)
Из всех найденных проектов на данный момент у меня никак не получается красиво вырезать его в свой ;(:wall:
Что еще вообще есть, кроме собейтов, SAMP+ и Asi-Plugin..?
Или может у кого-то завалялся написанный проект с рендером, то можно в его копии удалить всё кроме нужных мне файлов, и поделиться архивчиком.. Буду очень благодарен за это
Prime-Hack | AsiPlugin(https://dl.prime-hack.net/AsiPlugin/) (https://www.blast.hk/redirect/aHR0cHM6Ly9kbC5wcmltZS1oYWNrLm5ldC9Bc2lQbHVnaW4v)
что делать если аси лоадер не хочет загружать плагин?
Dark_Knight
31.12.2017, 02:30
что делать если аси лоадер не хочет загружать плагин?
Аси уверен, что не кривой?
Аси уверен, что не кривой?
Тоже так думал, но проблема не исчезла после его переустановки.
Да и другие плагины отлично работают.
И мой работает, но только если его подгружать через СЕ или другие инжекторы
vasiliy130198
31.12.2017, 06:39
Можно ли с помощью ImGUI в окне сделать нечто схожее с тем, что на скрине ниже?
Тоесть чтобы в создаваемом цветном окне сначала показать текстуру как backgroundimage, а после поверх неё писать текст, показать горизонтальную линию, добавить другую картинку (уже НЕ backgroundimage), и так далее. В ImGUI встретил только функцию ImGui::Image, но она не подойдёт мне ведь..
Если в ImGUI такое невозможно сделать, то какие тогда есть другие похожие GUI либы, чтобы реализовать это? (gwen например, или другие)
https://pp.userapi.com/c831409/v831409493/2d756/XP8M2aDnFYQ.jpg
Можно ли с помощью ImGUI в окне сделать нечто схожее с тем, что на скрине ниже?
Тоесть чтобы в создаваемом цветном окне сначала показать текстуру как backgroundimage, а после поверх неё писать текст, показать горизонтальную линию, добавить другую картинку (уже НЕ backgroundimage), и так далее. В ImGUI встретил только функцию ImGui::Image, но она не подойдёт мне ведь..
Если в ImGUI такое невозможно сделать, то какие тогда есть другие похожие GUI либы, чтобы реализовать это? (gwen например, или другие)
https://pp.userapi.com/c831409/v831409493/2d756/XP8M2aDnFYQ.jpg
Рисуешь прозрачное окно без заголовка по размеру текстуры
Рисуешь текстуру
Рисуешь текст
Риcуешь сепаратор
vasiliy130198
31.12.2017, 10:24
Рисуешь прозрачное окно без заголовка по размеру текстуры
Рисуешь текстуру
Рисуешь текст
Риcуешь сепаратор
вот такое выходит, как на скрине..
код такой:
C++:
IDirect3DTexture9
*
Texture
;
D3DXCreateTextureFromFileA
(
g_pd3dDevice
,
"bg-ny-snow3.png"
,
&
Texture
)
;
{
static
float
f
=
0.0f
;
ImGuiWindowFlags window_flags
=
0
;
window_flags
|=
ImGuiWindowFlags_NoTitleBar
;
window_flags
|=
ImGuiWindowFlags_ShowBorders
;
window_flags
|=
ImGuiWindowFlags_NoScrollbar
;
window_flags
|=
ImGuiWindowFlags_NoCollapse
;
window_flags
|=
ImGuiWindowFlags_MenuBar
;
ImGui
::
Begin
(
u8
"Проверка"
,
&
bla
,
ImVec2
(
0
,
0
)
,
0.3f
,
window_flags
)
;
ImGui
::
Text
(
u8
"Привет, мир!"
)
;
ImGui
::
Image
(
Texture
,
ImVec2
(
200
,
200
)
)
;
ImGui
::
Text
(
u8
"123"
)
;
ImGui
::
Separator
(
)
;
ImGui
::
End
(
)
;
}
https://pp.userapi.com/c834403/v834403670/6e901/p9a5Rw32Lp0.jpg
Текст сейчас ниже и выше самой картинки пишется, а мне нужно наоборот
MISTER_GONWIK
31.12.2017, 10:34
вот такое выходит, как на скрине..
код такой:
C++:
IDirect3DTexture9
*
Texture
;
D3DXCreateTextureFromFileA
(
g_pd3dDevice
,
"bg-ny-snow3.png"
,
&
Texture
)
;
{
static
float
f
=
0.0f
;
ImGuiWindowFlags window_flags
=
0
;
window_flags
|=
ImGuiWindowFlags_NoTitleBar
;
window_flags
|=
ImGuiWindowFlags_ShowBorders
;
window_flags
|=
ImGuiWindowFlags_NoScrollbar
;
window_flags
|=
ImGuiWindowFlags_NoCollapse
;
window_flags
|=
ImGuiWindowFlags_MenuBar
;
ImGui
::
Begin
(
u8
"Проверка"
,
&
bla
,
ImVec2
(
0
,
0
)
,
0.3f
,
window_flags
)
;
ImGui
::
Text
(
u8
"Привет, мир!"
)
;
ImGui
::
Image
(
Texture
,
ImVec2
(
200
,
200
)
)
;
ImGui
::
Text
(
u8
"123"
)
;
ImGui
::
Separator
(
)
;
ImGui
::
End
(
)
;
}
https://pp.userapi.com/c834403/v834403670/6e901/p9a5Rw32Lp0.jpg
Текст сейчас ниже и выше самой картинки пишется, а мне нужно наоборот
ты типа бесконечно вызываешь D3DXCreateTextureFromFileA?
вот такое выходит, как на скрине..
код такой:
C++:
IDirect3DTexture9
*
Texture
;
D3DXCreateTextureFromFileA
(
g_pd3dDevice
,
"bg-ny-snow3.png"
,
&
Texture
)
;
{
static
float
f
=
0.0f
;
ImGuiWindowFlags window_flags
=
0
;
window_flags
|=
ImGuiWindowFlags_NoTitleBar
;
window_flags
|=
ImGuiWindowFlags_ShowBorders
;
window_flags
|=
ImGuiWindowFlags_NoScrollbar
;
window_flags
|=
ImGuiWindowFlags_NoCollapse
;
window_flags
|=
ImGuiWindowFlags_MenuBar
;
ImGui
::
Begin
(
u8
"Проверка"
,
&
bla
,
ImVec2
(
0
,
0
)
,
0.3f
,
window_flags
)
;
ImGui
::
Text
(
u8
"Привет, мир!"
)
;
ImGui
::
Image
(
Texture
,
ImVec2
(
200
,
200
)
)
;
ImGui
::
Text
(
u8
"123"
)
;
ImGui
::
Separator
(
)
;
ImGui
::
End
(
)
;
}
https://pp.userapi.com/c834403/v834403670/6e901/p9a5Rw32Lp0.jpg
Текст сейчас ниже и выше самой картинки пишется, а мне нужно наоборот
ImGui::SetCursorPos для текста попробуй
kawa operand
31.12.2017, 10:45
Тоже так думал, но проблема не исчезла после его переустановки.
Да и другие плагины отлично работают.
И мой работает, но только если его подгружать через СЕ или другие инжекторы
у меня такое уже было, это зависит от кода, а не аси лоадера
кидай код скажу в чем дело
upd: быстрее блятб
у меня такое уже было, это зависит от кода, а не аси лоадера
кидай код скажу в чем дело
upd: быстрее блятб
C++:
#include
LONG PrevWndProc
=
NULL
;
LRESULT CALLBACK
myWndProc
(
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
uMsg
==
WM_KEYUP
&&
wParam
==
VK_F11
)
{
MessageBoxA
(
NULL
,
"u are retard"
,
"lel"
,
MB_OK
)
;
// тут типо супер секретный код
}
return
CallWindowProcA
(
(
WNDPROC
)
PrevWndProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReason
,
LPVOID lpvReserved
)
{
if
(
dwReason
==
DLL_PROCESS_ATTACH
)
{
PrevWndProc
=
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA: San Andreas"
)
,
GWL_WNDPROC
,
(
LONG
)
myWndProc
)
;
}
if
(
dwReason
==
DLL_PROCESS_DETACH
)
{
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA: San Andreas"
)
,
GWL_WNDPROC
,
PrevWndProc
)
;
}
return
TRUE
;
}
kawa operand
31.12.2017, 11:05
он то работает, но до загрузки сампа
ибо после загрузки сампа название окна меняется на GTA:SA:MP тут короче такую ***ню делай
создавай асинхронный поток, и в нем в цикле проверяй равенство stSAMP с нулем, если не равны - самп загружен
он то работает, но до загрузки сампа
ибо после загрузки сампа название окна меняется на GTA:SA:MP тут короче такую ***ню делай
создавай асинхронный поток, и в нем в цикле проверяй равенство stSAMP с нулем, если не равны - самп загружен
Я в одиночке его запускаю, лол
kawa operand
31.12.2017, 11:18
ну тогда хезе
мб оно и работает, попробуй на другую кнопку сделать
C++:
#include
LONG PrevWndProc
=
NULL
;
LRESULT CALLBACK
myWndProc
(
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
uMsg
==
WM_KEYUP
&&
wParam
==
VK_F11
)
{
MessageBoxA
(
NULL
,
"u are retard"
,
"lel"
,
MB_OK
)
;
// тут типо супер секретный код
}
return
CallWindowProcA
(
(
WNDPROC
)
PrevWndProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReason
,
LPVOID lpvReserved
)
{
if
(
dwReason
==
DLL_PROCESS_ATTACH
)
{
PrevWndProc
=
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA: San Andreas"
)
,
GWL_WNDPROC
,
(
LONG
)
myWndProc
)
;
}
if
(
dwReason
==
DLL_PROCESS_DETACH
)
{
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA: San Andreas"
)
,
GWL_WNDPROC
,
PrevWndProc
)
;
}
return
TRUE
;
}
плагины загружаются, когда еще нет окна игры, а ты ищешь HWND по окну.
плагины загружаются, когда еще нет окна игры, а ты ищешь HWND по окну.
т.е мне создавать поток, который будет искать окно игры?
т.е мне создавать поток, который будет искать окно игры?
Можно получить HWND по адресу 0xC97C1C. Если не нулевой значит окно есть и ты получишь его идентификатор.
vasiliy130198
31.12.2017, 19:30
ты типа бесконечно вызываешь D3DXCreateTextureFromFileA?
конечно нет) я знаю об этой проблеме, но сейчас у меня был вопрос насчет картинки, чтобы протестить. Потом конечно же я поправлю этот вызов бесконечный
Как использовать это в SF API?
Код:
0C81: samp force_vehicle_sync 11@
randazzo
02.01.2018, 03:08
Как использовать это в SF API?
Код:
0C81: samp force_vehicle_sync 11@
прежде чем писать, не пробовал искать?
SF->getSAMP()->getPlayers()->pLocalPlayer->ForceSendVehicleSync(carid);
Пробовал, не нашел, спасибо большое)
Как использовать этот опкод в SF API.?
CLEO:
0ADB:
0@v
= car_model
#LANDSTAL
name
BlackKnigga
02.01.2018, 23:44
Как использовать этот опкод в SF API.?
CLEO:
0ADB:
0@v
= car_model
#LANDSTAL
name
MTA/CModelInfoSA.cpp at dcc33107508b5edbff151659b7d52365f60c50b1 · SkyFire/MTA · GitHub(https://github.com/SkyFire/MTA/blob/dcc33107508b5edbff151659b7d52365f60c50b1/MTA10/game_sa/CModelInfoSA.cpp#L276) (https://github.com/SkyFire/MTA/blob/dcc33107508b5edbff151659b7d52365f60c50b1/MTA10/game_sa/CModelInfoSA.cpp#L276)
ARRAY_ModelInfo и FUNC_CText_Get возьми из хедера.
m_dwModelID на ид модели машины
Вобщем, возможно ли сделать так, чтобы рендерилась часть чего-либо (линия/прямоугльник и т.д.), в зависимости от видимости тела другого игрока (лишь часть его тела видно за зданием, к примеру)?
CleanLegend
03.01.2018, 15:11
Вобщем, возможно ли сделать так, чтобы рендерилась часть чего-либо (линия/прямоугльник и т.д.), в зависимости от видимости тела другого игрока (лишь часть его тела видно за зданием, к примеру)?
да, проверяй отдельно каждую кость
NarutoUA
03.01.2018, 15:13
Там около 20 костей в игре, допустим он сократит их до 7, всё равно фпс будет жрать неистово
CleanLegend
03.01.2018, 15:39
Там около 20 костей в игре, допустим он сократит их до 7, всё равно фпс будет жрать неистово
Как вариант можно использовать.Сейчас затестил, использовал 5 костей, фпс иногда проседало с 100 до 90, а так всё неплохо
Jack_Savage
05.01.2018, 17:58
Краш regex....
Код:
reg = std::regex("\{[^}]*}");
Вот почему то эта строка = крашу...
Может кто знает в чем дело ?
На С# эта регулярка работает...
kawa operand
05.01.2018, 18:12
а что парсить собираешься?
Jack_Savage
05.01.2018, 18:16
а что парсить собираешься?
Логин, пароль, номер карты, имя банка, ФИО, сервер на котором играешь...
А если серьезно то код цвета... {FFFFFF}
Логин, пароль, номер карты, имя банка, ФИО, сервер на котором играешь...
А если серьезно то код цвета... {FFFFFF}
Не проще {(.+)} ?
Dark_Knight
05.01.2018, 18:49
Экранируй { }. Юзай для std try catch
Jack_Savage
05.01.2018, 18:49
Ну короче вышло вот так.....
Может кому пригодится...
Поиск тега цвета через RegEx.
Типу {FFFFFF}
C++:
std
::
regex rg
=
std
::
regex
(
"\\{[^}]*\\}"
)
;
//Либо
std
::
regex rg
=
std
::
regex
(
R"(\{[^}]*\})"
)
;
PS: Спасибо SR_Team and Dark_Knight NarutoUA (https://blast.hk/members/2504/)
NarutoUA
05.01.2018, 19:25
PS: Спасибо SR_Team and Dark_Knight (https://blast.hk/members/34/)
Ты охуевший пидор, я тебе то же самое советовал в чате
Dark_Knight
05.01.2018, 20:37
while true на все же приложение будет идти.
Dark_Knight
05.01.2018, 20:42
Как это фиксануть?
Думай сам.
Jack_Savage
05.01.2018, 21:46
Юзать таймер)
@2Shae (https://www.blast.hk/members/25702/) можно изъебнуться и проверять кости актера на видимость, после чего рисовать только по координатам видимых костей
mrdiimax
06.01.2018, 19:43
Как прочитать файл в сф апи и вывести его содержимое в чат?)
kawa operand
06.01.2018, 19:47
std::ifstream
mrdiimax
06.01.2018, 23:13
std::ifstream
А дальше,тепа файлрид или че
BlackKnigga
06.01.2018, 23:17
А дальше,тепа файлрид или че
Дальше гугл
NarutoUA
07.01.2018, 18:17
Народ, я не понимаю, как вообще пишутся ASI плагины. В частности работа с RakNet. Там же нет никакого API вроде. Получается, работа напрямую с памятью. То есть, если я хочу забабахать плагин, который взаимодействует с RakNet мне придётся лезть в IDA и искать оффсеты? Я не мастер дебага и реверса. Есть ли где-то в инете список смещений SAMP'а?
Да
randazzo
07.01.2018, 18:24
Народ, я не понимаю, как вообще пишутся ASI плагины. В частности работа с RakNet. Там же нет никакого API вроде. Получается, работа напрямую с памятью. То есть, если я хочу забабахать плагин, который взаимодействует с RakNet мне придётся лезть в IDA и искать оффсеты? Я не мастер дебага и реверса. Есть ли где-то в инете список смещений SAMP'а?
Или, если смещений нет, то существует ли статические библиотеки/примеры кода, реализующие функционал по работе с RakNet?
Prime-Hack | AsiPlugin(https://dl.prime-hack.net/AsiPlugin/) (https://www.blast.hk/redirect/aHR0cHM6Ly9kbC5wcmltZS1oYWNrLm5ldC9Bc2lQbHVnaW4v) вроде есть поддержка ракнета
BlackKnigga
07.01.2018, 18:27
Народ, я не понимаю, как вообще пишутся ASI плагины. В частности работа с RakNet. Там же нет никакого API вроде. Получается, работа напрямую с памятью. То есть, если я хочу забабахать плагин, который взаимодействует с RakNet мне придётся лезть в IDA и искать оффсеты? Я не мастер дебага и реверса. Есть ли где-то в инете список смещений SAMP'а?
Или, если смещений нет, то существует ли статические библиотеки/примеры кода, реализующие функционал по работе с RakNet?
Смотри собейт. Тебе нужно хукать RakClientInterface
iAmerican
07.01.2018, 22:19
Народ, я не понимаю, как вообще пишутся ASI плагины. В частности работа с RakNet. Там же нет никакого API вроде. Получается, работа напрямую с памятью. То есть, если я хочу забабахать плагин, который взаимодействует с RakNet мне придётся лезть в IDA и искать оффсеты? Я не мастер дебага и реверса. Есть ли где-то в инете список смещений SAMP'а?
Или, если смещений нет, то существует ли статические библиотеки/примеры кода, реализующие функционал по работе с RakNet?
GitHub - sr-tream/UniLib(https://github.com/sr-tream/UniLib) (https://github.com/sr-tream/UniLib)
Prime-Hack | AsiPlugin(https://dl.prime-hack.net/AsiPlugin/) (https://www.blast.hk/redirect/aHR0cHM6Ly9kbC5wcmltZS1oYWNrLm5ldC9Bc2lQbHVnaW4v) вроде есть поддержка ракнета
Там только интерфейсы. До методов и хуков руки не дошли пока.
Jack_Savage
08.01.2018, 12:35
Народ, я не понимаю, как вообще пишутся ASI плагины. В частности работа с RakNet. Там же нет никакого API вроде. Получается, работа напрямую с памятью. То есть, если я хочу забабахать плагин, который взаимодействует с RakNet мне придётся лезть в IDA и искать оффсеты? Я не мастер дебага и реверса. Есть ли где-то в инете список смещений SAMP'а?
Или, если смещений нет, то существует ли статические библиотеки/примеры кода, реализующие функционал по работе с RakNet?
mod_s0beit_sa/samp.cpp at 74970634c722bbeb898747ee2353788987d67aa7 · BlastHackNet/mod_s0beit_sa · GitHub(https://github.com/BlastHackNet/mod_s0beit_sa/blob/74970634c722bbeb898747ee2353788987d67aa7/src/samp.cpp) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/74970634c722bbeb898747ee2353788987d67aa7/src/samp.cpp)
Вот тут смотри...
Метод installSAMPHooks.
А тебе оно очень надо (у меня где то был готовый код вроде.)?
randazzo
08.01.2018, 13:19
mod_s0beit_sa/samp.cpp at 74970634c722bbeb898747ee2353788987d67aa7 · BlastHackNet/mod_s0beit_sa · GitHub(https://github.com/BlastHackNet/mod_s0beit_sa/blob/74970634c722bbeb898747ee2353788987d67aa7/src/samp.cpp) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/74970634c722bbeb898747ee2353788987d67aa7/src/samp.cpp)
Вот тут смотри...
Метод installSAMPHooks.
А тебе оно очень надо (у меня где то был готовый код вроде.)?
в этом файле нет ни одного упоминания про ракнет хуки.
Jack_Savage
08.01.2018, 13:40
в этом файле нет ни одного упоминания про ракнет хуки.
https://i.imgur.com/A91pCLe.png
А это тогда что ?
mrdiimax
08.01.2018, 16:01
В чем проблема,установил Visual Studio 2017, запускаю - не запускается,устанавливал разные версии,тобишь Professional Enterprise,никакая из них не запускается,что делать???
аси, не сф
перебираю хендлы игроков, получаю по ним структуры актеров, вывожу в чат:
C++:
chatMsg
(
0xffffffff
,
"handle: 0x%x | ped: 0x%x"
,
v31
,
actor_info
)
;
chatMsg
(
0xffffffff
,
"X: %.2f Y: %.2f Z: %.2f"
,
actor_info
->
matrix
->
pos
.
x
,
actor_info
->
matrix
->
pos
.
y
,
actor_info
->
matrix
->
pos
.
z
)
;
chatMsg
(
0xffffffff
,
"HP: %.2f | &HP: %x"
,
actor_info
->
fHealth
,
&
(
actor_info
->
fHealth
)
)
;
В рез-те наблюдаю хендлы, адреса стр-р и координаты всех актеров из зоны стрима, а с получением хп какая-то хуета, адекватно хп получаю только своё, у других актеров по этому адресу лежит 1000.0:
https://pp.userapi.com/c840326/v840326543/41f2d/4mUjwZjeSa0.jpg
Структуру написал правильно, в оффсетах не ошибся. У меня только одно предположение - на вики написано "CPed +0x50C = начало класса CPedIK", т.е., начиная с 0x50c и ниже - это инфа, относящаяся только к игроку, за которого я играю? Или что значит этот ебучий педик?
Если я прав, то, где тогда лежат хп других актеров? Или их можно получить только вызвав функцию?
А если я не прав, то скажите в каком месте я долбоеб
аси, не сф
перебираю хендлы игроков, получаю по ним структуры актеров, вывожу в чат:
C++:
chatMsg
(
0xffffffff
,
"handle: 0x%x | ped: 0x%x"
,
v31
,
actor_info
)
;
chatMsg
(
0xffffffff
,
"X: %.2f Y: %.2f Z: %.2f"
,
actor_info
->
matrix
->
pos
.
x
,
actor_info
->
matrix
->
pos
.
y
,
actor_info
->
matrix
->
pos
.
z
)
;
chatMsg
(
0xffffffff
,
"HP: %.2f | &HP: %x"
,
actor_info
->
fHealth
,
&
(
actor_info
->
fHealth
)
)
;
В рез-те наблюдаю хендлы, адреса стр-р и координаты всех актеров из зоны стрима, а с получением хп какая-то хуета, адекватно хп получаю только своё, у других актеров по этому адресу лежит 1000.0:
https://pp.userapi.com/c840326/v840326543/41f2d/4mUjwZjeSa0.jpg
Структуру написал правильно, в оффсетах не ошибся. У меня только одно предположение - на вики написано "CPed +0x50C = начало класса CPedIK", т.е., начиная с 0x50c и ниже - это инфа, относящаяся только к игроку, за которого я играю? Или что значит этот ебучий педик?
Если я прав, то, где тогда лежат хп других актеров? Или их можно получить только вызвав функцию?
А если я не прав, то скажите в каком месте я долбоеб
SF Plugin - ActiveHitpoints(https://blast.hk/threads/13033/) (https://blast.hk/threads/13033/)
Jack_Savage
08.01.2018, 20:43
SF Plugin - ActiveHitpoints(https://blast.hk/threads/13033/) (https://blast.hk/threads/13033/)
Так он же вроде хотел без SF это сделать
BlackKnigga
08.01.2018, 20:51
Так он же вроде хотел без SF это сделать
Он прочитает и поймет что хп других игроков надо брать из структур сампа
Jack_Savage
08.01.2018, 21:32
Он прочитает и поймет что хп других игроков надо брать из структур сампа
А в какой именно структуре самп хранит это ?
CleanLegend
08.01.2018, 21:36
А в какой именно структуре самп хранит это ?
g_SAMP->pPools->pPlayer->pRemotePlayer->pPlayerData->fActorHealth;
vasiliy130198
12.01.2018, 02:22
Можно ли мониторить отправляемые серверу rpc пакеты? (перехват исходящих пакетов.. как-то так)
Если да, то как именно определить, что текущий rpc пакет отправил именно клиент сампа, а не мой скрипт? (.cs или .sf)
Jack_Savage
12.01.2018, 02:29
Можно ли мониторить отправляемые серверу rpc пакеты? (перехват исходящих пакетов.. как-то так)
Если да, то как именно определить, что текущий rpc пакет отправил именно клиент сампа, а не мой скрипт? (.cs или .sf)
Можно через SF плагин.
tutorials - api_lesson_raknet | BlastHack — DEV_WIKI(https://blast.hk/wiki/tutorials:api_lesson_raknet) (https://blast.hk/wiki/tutorials:api_lesson_raknet)
SAMP.ASI
12.01.2018, 15:28
Если скачать с темы Избранное - Софт - SAMPFUNCS(https://blast.hk/threads/17/) (https://blast.hk/threads/17/) файл
И распаковать его в любую папку, позже запустить файл SFPlugin.sln , то visual studio 2017 будет ругаться, на стандартные инклуды ( windows.h process.h )
И требовать точку с запятой в mainloop() . Как это исправить?
https://pp.userapi.com/c840329/v840329014/45809/7fLYJt-LfwU.jpg
mrdiimax
12.01.2018, 15:30
Если скачать с темы Избранное - Софт - SAMPFUNCS(https://blast.hk/threads/17/) (https://blast.hk/threads/17/) файл
И распаковать его в любую папку, позже запустить файл SFPlugin.sln , то visual studio 2017 будет ругаться, на стандартные инклуды ( windows.h process.h )
И требовать точку с запятой в mainloop() . Как это исправить?
https://pp.userapi.com/c840329/v840329014/45809/7fLYJt-LfwU.jpg
Подключи SDK,если не умеешь - напиши мне,помогу vk.com/This_Cold
SAMP.ASI
12.01.2018, 19:29
Какие зависимости есть у проекта SFPlugin.sln . Переустановил винду, подключил sdk , но это не помогло
Dark_Knight
12.01.2018, 19:35
Какие зависимости есть у проекта SFPlugin.sln . Переустановил винду, подключил sdk , но это не помогло
DirectX SKD и все.
SAMP.ASI
12.01.2018, 20:06
DirectX SKD и все.
Ее поставил и все равно не работает
Jack_Savage
12.01.2018, 20:37
Ее поставил и все равно не работает
А что у тебя в настройках то стоит ?
https://forum.antichat.xyz/attachments/27177272/
Вот чекни этот пункт
"И требовать точку с запятой в mainloop()" это потому что не нашло какой то там инклуд где есть дефайн CALLBACK
SAMP.ASI
12.01.2018, 20:39
А что у тебя в настройках то стоит ?
Вот чекни этот пункт
Пробовал все пункты, напиши в вк /road2mz
Как избавиться от _ в нике Vasya_Pupkin = Vasya Pupkin?
Код:
char buff[128];
sprintf(buff, "/me текст %s",
pPlayer->szPlayerName);
SF->getSAMP()->getPlayers()->pLocalPlayer->Say(buff);
Sleep(700);
SF->getSAMP()->getPlayers()->pLocalPlayer->Say("/anim 20");
p.s Я же правильно делаю задержку?
BlackKnigga
13.01.2018, 01:41
Как избавиться от _ в нике Vasya_Pupkin = Vasya Pupkin
C++:
std
::
string
DeleteUnderscore
(
std
::
string str
)
{
for
(
char
&
ch
:
str
)
if
(
ch
==
'_'
)
ch
=
' '
;
return
str
;
}
Но явно можно как то проще
p.s Я же правильно делаю задержку?
Нет
SAMP.ASI
13.01.2018, 01:45
C++:
std
::
string
DeleteUnderscore
(
std
::
string str
)
{
for
(
char
&
ch
:
str
)
if
(
ch
==
'_'
)
ch
=
' '
;
return
str
;
}
Но явно можно как то проще
Нет
Как делать задержку , как использовать то, что ты скинул?
BlackKnigga
13.01.2018, 01:59
Как делать задержку
Через GetTickCount
как использовать то, что ты скинул?
Возвращает строку в параметре без подчеркиваний
SAMP.ASI
13.01.2018, 02:01
Через GetTickCount
Возвращает строку в параметре без подчеркиваний
Можешь понятнее обьяснить, я только сегодня начал что либо делать ( про удаление _ )
Jack_Savage
13.01.2018, 02:06
Пробовал все пункты, напиши в вк /road2mz
C++:
Объявляешь функцию
std
::
string
DeleteUnderscore
(
std
::
string str
)
{
for
(
char
&
ch
:
str
)
if
(
ch
==
'_'
)
ch
=
' '
;
return
str
;
}
А вот так там где тебе надо использовать
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
Say
(
DeleteUnderscore
(
"Jack_Savage"
)
.
c_str
(
)
)
;
jenekbueno
13.01.2018, 02:24
Можно ли мониторить отправляемые серверу rpc пакеты? (перехват исходящих пакетов.. как-то так)
Если да, то как именно определить, что текущий rpc пакет отправил именно клиент сампа, а не мой скрипт? (.cs или .sf)
если на сф то
tutorials - api_lesson_raknet | BlastHack — DEV_WIKI(https://blast.hk/wiki/tutorials:api_lesson_raknet) (https://blast.hk/wiki/tutorials:api_lesson_raknet)
если на клео
https://forum.antichat.xyz/attachments/27177380/
Perojek)0
15.01.2018, 17:30
Где можно посмотреть на пример перехвата RPC/Packet'a без сф?
Где можно посмотреть на пример перехвата RPC/Packet'a без сф?
Ковыряй собейт
Vlad Horii
19.01.2018, 01:13
При компиляции проекта в Visual Studio появляется ошибка. Как исправить?
https://i.imgur.com/lkx9d0G.png
При компиляции проекта в Visual Studio появляется ошибка. Как исправить?
lkx9d0G.pngsan0 · 19 Янв 2018 в 00:21' data-fancybox="lb-post-178567" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fi.imgur.com%2Flkx9d0 G.png&hash=47f2880b2dd4a40b3a42eb48e3cf07ae" style="cursor: pointer;" title="lkx9d0G.png">
https://i.imgur.com/lkx9d0G.png
Поиск | BlastHack - Cheating as Art(https://blast.hk/search/) (https://blast.hk/search/) -> d3dx9.h
kawa operand
19.01.2018, 10:06
Directx sdk установи
Vlad Horii
19.01.2018, 14:34
Directx sdk установи
Установил, появилась другая ошибка.
VS 2017 version
Она вроде проблемная очень. А 2013 не устанавливается
iAmerican
21.01.2018, 20:52
C++:
int
state
;
state
=
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
state
;
Если всегда показывает 0 , криво перенес структуру actor_info или в чём то другом подводный камень?
не соб , отдельная DLL.
CleanLegend
21.01.2018, 22:05
C++:
int
state
;
state
=
g_Players
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
state
;
Если всегда показывает 0 , криво перенес структуру actor_info или в чём то другом подводный камень?
не соб , отдельная DLL.
Структура кривая
Gromov512
22.01.2018, 05:41
При компиляции вылазиет ошибка "не удается открыть источник файл "windows.h"
Как исправить ?
kawa operand
22.01.2018, 13:03
Проект в папку с проектами кинь и оттуда открой
Не уверен что поможет но была ни была если не поможет можно переустановить виндовс
iAmerican
22.01.2018, 13:08
При компиляции вылазиет ошибка "не удается открыть источник файл "windows.h"
Как исправить ?
VS 2017?
Gromov512
22.01.2018, 13:15
VS 2017?
da
w0odcr3st
22.01.2018, 19:30
Пытаюсь скомпилировать ImGUI pie(библиотека imgui самая новая, VS 2017), но ругается на неопределённый идентификатор ImGuiState. Порылся в двух версиях(старых) ImGui, но и там не нашёл, может кто-то подсказать, как его скомпилировать?
Сурс ImGui pie: PieMenuAdv · GitHub(https://gist.github.com/thennequin/64b4b996ec990c6ddc13a48c6a0ba68c) (https://www.blast.hk/redirect/aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdGhlbm5lcXVpbi82NG I0Yjk5NmVjOTkwYzZkZGMxM2E0OGM2YTBiYTY4Yw)
iAmerican
22.01.2018, 23:22
da
Могу помочь через тимвиевер, скайп в лс кинь
NarutoUA
23.01.2018, 15:13
Почему на месте, где должен быть указатель на RakClientInterface, стоят нули? Версия SAMP - 0.3.7 R2. Использовал смещения samp.dll + 0x217BD0 + 0x3C9.
http://i.prntscr.com/dC9x0Q2JTxSX0q3rXGXM7w.png
Может быть потому что надо [samp.dll+ 0x217BD0] + 0x3C9 ?
iAmerican
24.01.2018, 02:49
Допустим у меня есть костевой enum. Я хочу его использовать в combo scroll.
Возможно как то подставить за место AAA, BBB... enum?
Должно быть вроде вот так
C++:
inline
char
getChar
(
eBone section
)
{
ImGui
::
Combo
(
u8
"Выбор кости"
,
&
item2
,
char
(
section
)
,
IM_ARRAYSIZE
(
items
)
)
;
}
Но что то не хочет
C++:
const
char
*
items
[
]
=
{
"AAAA"
,
"BBBB"
,
"CCCC"
,
"DDDD"
,
"EEEE"
,
"FFFF"
,
"GGGG"
,
"HHHH"
,
"IIII"
,
"JJJJ"
,
"KKKK"
}
;
static
int
item2
=
-
1
;
ImGui
::
Combo
(
"Выбор кости"
,
&
item2
,
items
,
IM_ARRAYSIZE
(
items
)
)
;
C++:
enum
eBone
{
BONE_PELVIS1
=
1
,
BONE_PELVIS
,
BONE_SPINE1
,
BONE_UPPERTORSO
,
BONE_NECK
,
BONE_HEAD2
,
BONE_HEAD1
,
BONE_HEAD
,
BONE_RIGHTUPPERTORSO
=
21
,
BONE_RIGHTSHOULDER
,
BONE_RIGHTELBOW
,
BONE_RIGHTWRIST
,
BONE_RIGHTHAND
,
BONE_RIGHTTHUMB
,
BONE_LEFTUPPERTORSO
=
31
,
BONE_LEFTSHOULDER
,
BONE_LEFTELBOW
,
BONE_LEFTWRIST
,
BONE_LEFTHAND
,
BONE_LEFTTHUMB
,
BONE_LEFTHIP
=
41
,
BONE_LEFTKNEE
,
BONE_LEFTANKLE
,
BONE_LEFTFOOT
,
BONE_RIGHTHIP
=
51
,
BONE_RIGHTKNEE
,
BONE_RIGHTANKLE
,
BONE_RIGHTFOOT
}
;
Gromov512
24.01.2018, 08:51
VS 2013
Ошибка:
Ошибка 9 error LNK2001: неразрешенный внешний символ "___stdio_common_vsscanf" C:\Users\ПК/Desktop\SFPlugin26\SFPlugin\libcurl.lib(telnet.obj ) SFPlugin
ошибка при компилировании, компилирую в Code::Blocks
Код:
C:\Users\USER\Desktop\SF\SFPlugin\SFPlugin\main.cp p|6|fatal error: SAMPFUNCS_API.h: No such file or directory|
строка с ошибкой
C++:
#include "SAMPFUNCS_API.h"
C++:
#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
1
;
int
i
=
std
:
stoi
(
param
)
;
char
buf
[
128
]
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
if
(
!
pPlayer
)
return
;
sprintf
(
buf
,
"Name: %s | Ping - %d ms | Score - %d | isNPC - %d | AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
buf
)
;
}
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
(
"showinfo"
,
cmd_show_info_player
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"SAMPFUNCS Plugin loaded."
)
;
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
;
}
kawa operand
24.01.2018, 16:08
компилирую в Code::Blocks
он ток под мсвс вродь
Jack_Savage
24.01.2018, 22:03
Как можно инжектнуть samp.dll в уже запущенную игру ?
То есть самп инжектится при старте процесса gta_sa.
А можно как то инжектить его уже после того как игра запустилась и показала меню ?
kawa operand
24.01.2018, 22:06
samp.dll должен загрузиться до показа окна
w0odcr3st
24.01.2018, 23:15
Как можно выполнить команду или послать сообщение серверу через sampfuncs?
Как можно выполнить команду или послать сообщение серверу через sampfuncs?
SF->getSAMP()->getPlayers()->pLocalPlayer->Say("text");
Nika23830
28.01.2018, 02:22
1.Ваш вопрос: Как выдать сообщение при загрузке? Которые показываются перед "Connected. Joining the game..."
randazzo
28.01.2018, 09:16
1.Ваш вопрос: Как выдать сообщение при загрузке? Которые показываются перед "Connected. Joining the game..."
В проекте есть пример вывода сообщения в чат, при входе в игру.
Jack_Savage
28.01.2018, 14:49
Как игра лочит мышку ?
PS: Хукал SetCursorPos и все равно не мог двигать мышкой
Nika23830
29.01.2018, 21:10
В проекте есть пример вывода сообщения в чат, при входе в игру.
Можете все равно пожалуйста сюда кинуть код для примера, я нуб :ССС
1.Ваш вопрос: Как выдать сообщение при загрузке? Которые показываются перед "Connected. Joining the game..."
randazzo
29.01.2018, 21:43
Можете все равно пожалуйста сюда кинуть код для примера, я нуб :ССС
C++:
#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
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
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"SAMPFUNCS Plugin loaded."
)
;
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
;
}
iAmerican
30.01.2018, 14:56
Хукаю WndProc ..
C++:
WNDPROC hOrigProc
=
NULL
;
hOrigProc
=
(
WNDPROC
)
SetWindowLong
(
*
(
HWND
*
)
0xC97C1C
,
GWL_WNDPROC
,
(
LONG
)
(
UINT_PTR
)
WndProc
)
;
C++:
bool
__stdcall
WndProc
(
HWND hwnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
uMsg
==
WM_KEYDOWN
)
{
pSAMP
->
addMessageToChat
(
-
1
,
"%i"
,
wParam
)
;
if
(
wParam
==
192
)
{
// 192 - ®
pSAMP
->
say
(
"/CMD"
)
;
return
false
;
}
}
return
true
;
}
Получается если я жму "~" , открывается чат сампа , мне надо сделать что бы он не открывался , а отправлялась команда.
Когда захожу в самп , я получаю нажатые клавиши , но перестают реагировать клавиши.
kawa operand
30.01.2018, 15:08
return true;
C++:
CallWindowProc
(
hOrigProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
и ваще он вот так выглядит
C++:
LRESULT CALLBACK
WindowProc
(
_In_ HWND hwnd
,
_In_ UINT uMsg
,
_In_ WPARAM wParam
,
_In_ LPARAM lParam
)
;
iAmerican
30.01.2018, 15:16
C++:
CallWindowProc
(
hOrigProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
и ваще он вот так выглядит
C++:
LRESULT CALLBACK
WindowProc
(
_In_ HWND hwnd
,
_In_ UINT uMsg
,
_In_ WPARAM wParam
,
_In_ LPARAM lParam
)
;
И так и так пробовал , если сделать так , то клавиши работают , но всё равно чат открывается.
C++:
LRESULT CALLBACK
WndProc
(
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
uMsg
==
WM_KEYDOWN
)
{
if
(
wParam
==
192
)
{
pSAMP
->
say
(
"/CMD"
)
;
return
false
;
}
}
return
CallWindowProcA
(
(
WNDPROC
)
hOrigProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
}
В SF этого хватало
C++:
bool
__stdcall
wndProc
(
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
uMsg
==
WM_KEYDOWN
)
{
if
(
wParam
==
192
)
{
// 192 - ®
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
Say
(
"/CMD"
)
;
return
false
;
}
}
return
true
;
}
Dark_Knight
30.01.2018, 16:24
Хукай открытие чата
И так и так пробовал , если сделать так , то клавиши работают , но всё равно чат открывается.
1) Попробуй SetWindowLong после того, как по адресу samp.dll + 0x119CB8 (4 байта) будет что-то больше 0. Это означает, что самп уже установил новый адрес процедуры диалогового окна для своих нужд. Это значение еще SF модифицирует, так для справки.
2) TRUE != true (BOOL != BOOLEAN), и в специфических условиях это может работать по другому.
C++:
LRESULT CALLBACK
WndProc
(
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
uMsg
==
WM_CHAR
&&
wParam
==
'`'
)
{
// .. //
return
FALSE
;
}
return
CallWindowProc
(
hOrigProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
}
3) Вместо всего этого WndProc лишь для игнорирования одной клавиши попробуй 5 байт занопить по адресу samp.dll + 0x5DAFD.
4) Проверял это с открытием чата на 'T', у меня нет тильды ))))
tropical5466
02.02.2018, 21:10
Имеется такая функция из сурсов соба
Код:
#define FUNC_JPegCompressScreenToFile 0x5D0820
#define CLASS_RwCamera 0xB6F97C
VOID CGameSA::TakeScreenshot ( char * szFileName )
{
DWORD dwFunc = FUNC_JPegCompressScreenToFile;
_asm
{
mov eax, CLASS_RwCamera
mov eax, [eax]
push szFileName
push eax
call dwFunc
add esp,8
}
}
Как её можно вызвать без asm вставки?
BlackKnigga
02.02.2018, 22:09
Имеется такая функция из сурсов соба
Код:
#define FUNC_JPegCompressScreenToFile 0x5D0820
#define CLASS_RwCamera 0xB6F97C
VOID CGameSA::TakeScreenshot ( char * szFileName )
{
DWORD dwFunc = FUNC_JPegCompressScreenToFile;
_asm
{
mov eax, CLASS_RwCamera
mov eax, [eax]
push szFileName
push eax
call dwFunc
add esp,8
}
}
Как её можно вызвать без asm вставки?
C++:
#define FUNC_JPegCompressScreenToFile 0x5D0820
#define CLASS_RwCamera 0xB6F97C
typedef
void
(
_cdecl
*
JPegCompressScreenToFile
)
(
void
*
,
char
*
)
;
char
*
szFileName
=
"ПУТЬ ЗДЕСЬ"
;
JPegCompressScreenToFile Func
=
(
JPegCompressScreenToFile
)
FUNC_JPegCompressScreenToFile
;
Func
(
*
(
void
*
*
)
CLASS_RwCamera
,
szFileName
)
;
std::function я чет не осилил:sad_frog2:
Только зачем парится и не использовать ассемблер?
tropical5466
02.02.2018, 22:21
C++:
#define FUNC_JPegCompressScreenToFile 0x5D0820
#define CLASS_RwCamera 0xB6F97C
typedef
HRESULT
(
_cdecl
*
JPegCompressScreenToFile
)
(
void
*
,
char
*
)
;
char
*
szFileName
=
"ПУТЬ ЗДЕСЬ"
;
JPegCompressScreenToFile Func
=
(
JPegCompressScreenToFile
)
FUNC_JPegCompressScreenToFile
;
Func
(
*
(
void
*
*
)
CLASS_RwCamera
,
szFileName
)
;
std::function я чет не осилил:sad_frog2:
Только зачем парится и не использовать ассемблер?
Да мне просто не на плюсы надо эту функцию
Спасибо
Только зачем парится и не использовать ассемблер?
Может, так? Вызывается как обычно TakeScreenshot("screen1.jpg") :)
C++:
#define CLASS_RwCamera 0xB6F97C
inline
void
*
GetRwCamera
(
)
{
return
*
(
void
*
*
)
CLASS_RwCamera
;
}
#define FUNC_JPegCompressScreenToFile 0x5D0820
void
TakeScreenshot
(
const
char
*
szFileName
)
{
(
(
void
(
__cdecl
*
)
(
void
*
,
const
char
*
)
)
FUNC_JPegCompressScreenToFile
)
(
GetRwCamera
(
)
,
szFileName
)
;
}
Как отправить сообщение в чат через память?
Как отправить сообщение в чат через память?
mod_s0beit_sa/samp.cpp at master · BlastHackNet/mod_s0beit_sa · GitHub(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L675) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L675)
Jack_Savage
06.02.2018, 19:10
В Directx 9 можно растянуть спрайт на весь экран ?
Как получить LVL (1)
{FFFFFF}Уровень: {B83434}[1] из этой строки? А то у меня постоянно выбивает 87487448
kawa operand
12.02.2018, 13:52
А как получаешь то
1. Как создать текст при загрузки игры? (как во всяких enb ну или тот же SAMPFUNCS когда нажимаешь ESC там в левом верхнем углу написано sampfuncs version... c++)
https://a.radikal.ru/a10/1802/af/ca32fa04d5ae.png
DarkP1xel
13.02.2018, 01:24
Как создать текст при загрузки игры?
D3DXCreateFont (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicm FyeS93aW5kb3dzL2Rlc2t0b3AvYmIxNzI3NzModj12cy44NSku YXNweA)
D3DXCreateFont (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicm FyeS93aW5kb3dzL2Rlc2t0b3AvYmIxNzI3NzModj12cy44NSku YXNweA)
Сделал как ты сказал, создал header файл с параметрами для функции, взял твой код с 1 урока про DLL, но появилась проблема я как новичок в c++ не понял что за параметры у данной функции "D3DXCreateFont", помоги пожалуйста, либо просто объясни что вставлять . Заранее спасибо.
https://c.radikal.ru/c22/1802/23/fbfdc5769053.jpg
kawa operand
13.02.2018, 21:06
Хукай пресент
Sasha22rus
19.02.2018, 11:15
https://forum.antichat.xyz/attachments/27185018/
кто знает, как изменить кодировку в RakSampe?
кто знает, как изменить кодировку в RakSampe?
window.cpp и netrpc.cpp > tahoma на system
samp is meme
21.02.2018, 17:41
Есть ли необходимость использовать прототипы функций?
Gnusmus_Cool
22.02.2018, 16:56
1. Как обойти это?
https://i.imgur.com/E6q7QBL.png
jenekbueno
22.02.2018, 16:58
методы класса реализуй в .cpp файле, в хедере как правило только заголовки функций
Gnusmus_Cool
22.02.2018, 17:07
методы класса реализуй в .cpp файле, в хедере как правило только заголовки функций
https://forum.antichat.xyz/attachments/27185897/
У меня цель, создать D3D окно для чита, я делал всё, как у него в видео, но при этом у меня есть ошибка, а у него всё чисто
у меня есть ошибка, а у него всё чисто
1. Удали Mehack:: в каждом предварительном объявлениии функций.
2. Класс, скорее всего, нуждается в конструкторе и public:
Как проверить наличие ключа и значения в реестре?
CleanLegend
22.02.2018, 23:23
Как проверить наличие ключа и значения в реестре?
Исходник - LiteRegedit(https://blast.hk/threads/13855/) (https://blast.hk/threads/13855/)
Чет не вижу там такой функции.. мб название функции той дашь?
CleanLegend
23.02.2018, 11:16
Чет не вижу там такой функции.. мб название функции той дашь?
C++:
[CODE]
char
buf
[
256
]
;
if
(
reg
->
GetRegister
(
"Nick"
,
REG_SZ
,
buf
,
256
)
)
{
std
::
cout
1. Как отследить в пустом ASI плагине коннект к серверу -> узнать имя и ID игрока ?
kawa operand
23.02.2018, 13:08
через структуры
которые кстати отлично расписаны в исходниках собейта
mod_s0beit_sa/samp.h at master · BlastHackNet/mod_s0beit_sa · GitHub(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.h) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.h)
[QUOTE="CleanLegend"]
C++:
[CODE]
char
buf
[
256
]
;
if
(
reg
->
GetRegister
(
"Nick"
,
REG_SZ
,
buf
,
256
)
)
{
std
::
cout
kawa operand
23.02.2018, 14:57
RegGetValueA возвращает 2 если ключа не существует
CleanLegend
23.02.2018, 15:03
Я так и думал..
Эту функцию я смогу реализовать даже без класса ср тима, мне нужна функция, которая проверяет, существует ли ключ в реестре, и возвращает BOOL.
Не знаешь такой?
C++:
bool
check
(
)
{
char
buf
[
256
]
;
if
(
reg
->
GetRegister
(
"Nick"
,
REG_SZ
,
buf
,
256
)
)
{
return
true
;
}
else
{
return
false
;
}
}
через структуры
которые кстати отлично расписаны в исходниках собейта
mod_s0beit_sa/samp.h at master · BlastHackNet/mod_s0beit_sa · GitHub(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.h) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.h)
1. Что делать с этими структурами? Придется вырезать RakClient и всё что с ним связано?
kawa operand
23.02.2018, 15:06
по смещениям начиная от samp.dll иди к stPlayerPool::sLocalPlayerID и stPlayerPool::strLocalPlayerName
BlackKnigga
23.02.2018, 16:51
по смещениям начиная от samp.dll иди к stPlayerPool::sLocalPlayerID и stPlayerPool::strLocalPlayerName
Ему похоже надо коннект другого игрока
1. Что делать с этими структурами? Придется вырезать RakClient и всё что с ним связано?
Да. Ну или изъебнутся и хукнуть обработчик рпц
Ему похоже надо коннект другого игрока
Да. Ну или изъебнутся и хукнуть обработчик рпц
Мне нужно отследить когда localplayer подключается к серверу , и потом узнать мой playerid и nickname
Нашел такую функцию, как PlaySound. Беда в том, что она не хочет воспроизводить .mp3 файл (длит. звука 10 сек).
Путь указан правильно. Пробовал разные вариации с флагами запуска. TEXT(путь) - тоже. Но возвращает функция всегда FALSE (т.е звук не воспроизведен).
C++:
PlaySoundA
(
/*путь*/
,
NULL
,
SND_RESOURCE
)
;
// Для примера
Как еще в SF API можно реализовать воспроизведение файлов формата .mp3 / .wav ?
Dark_Knight
24.02.2018, 18:03
Нашел такую функцию, как PlaySound. Беда в том, что она не хочет воспроизводить .mp3 файл (длит. звука 10 сек).
Путь указан правильно. Пробовал разные вариации с флагами запуска. TEXT(путь) - тоже. Но возвращает функция всегда FALSE (т.е звук не воспроизведен).
bass.lib юзай.
1. Как получить hash файла в md5?
1. Как получить hash файла в md5?
Естественно считать по всем байтам внутри файла, пример из гугла:
C++:
[CODE]
#include
//for std::cout
#include
//for std::string
#include
#include "MD5.h"
using
std
::
cout
;
using
std
::
endl
;
int
main
(
int
argc
,
char
*
argv
[
]
)
{
//Start opening your file
ifstream inBigArrayfile
;
inBigArrayfile
.
open
(
"Data.dat"
,
std
::
ios
::
binary
|
std
::
ios
::
in
)
;
//Find length of file
inBigArrayfile
.
seekg
(
0
,
std
::
ios
::
end
)
;
long
Length
=
inBigArrayfile
.
tellg
(
)
;
inBigArrayfile
.
seekg
(
0
,
std
::
ios
::
beg
)
;
//read in the data from your file
char
*
InFileData
=
new
char
[
Length
]
;
inBigArrayfile
.
read
(
InFileData
,
Length
)
;
//Calculate MD5 hash
std
::
string Temp
=
md5
(
InFileData
,
Length
)
;
cout
Вивик8872
24.02.2018, 20:43
Здравствуйте,решил поиграться с прицелом.Не пойму,как вместо стандартного прицела сделать свой,но только при наличии собейта?Прошу помощи
kawa operand
24.02.2018, 20:44
хукать загрузку прицела в игру и загружать свой вместо нево
В C++ or SF API можно отправить комп на гибернизацию,сон или тупо выключить?
BlackKnigga
26.02.2018, 09:21
В C++ or SF API можно отправить комп на гибернизацию,сон или тупо выключить?
Можно, используя винапи, гугли как
Дайте пожалуйста адрес памяти чтоб узнать ID скина игрока)
CleanLegend
01.03.2018, 17:34
0xB6F5F0 + 0x22
Dark_Knight
01.03.2018, 17:40
Адреса Памяти (SA) — GTAModding.ru(http://gtamodding.ru/wiki/Адреса_Памяти_(SA)) (https://www.blast.hk/redirect/aHR0cDovL2d0YW1vZGRpbmcucnUvd2lraS_QkNC00YDQtdGB0L Bf0J_QsNC80Y_RgtC4XyhTQSk)
Адреса Памяти (SA) — GTAModding.ru(http://gtamodding.ru/wiki/Адреса_Памяти_(SA)) (https://www.blast.hk/redirect/aHR0cDovL2d0YW1vZGRpbmcucnUvd2lraS_QkNC00YDQtdGB0L Bf0J_QsNC80Y_RgtC4XyhTQSk)
Ого. Странно, что английская версия от русской отличается. То что нужно есть в английской, то что нужно в русской.
bass.lib юзай.
C++:
HSTREAM str
;
BASS_Init
(
-
1
,
44100
,
BASS_DEVICE_3D
,
0
,
NULL
)
;
str
=
BASS_StreamCreateFile
(
FALSE
,
"C://join.mp3"
,
0
,
0
,
0
)
;
if
(
BASS_ChannelPlay
(
str
,
FALSE
)
)
SF
->
Log
(
"Прошло успешно:"
)
;
else
SF
->
Log
(
"Не проиграно :("
)
;
Так-с, проблема в чем - "прошло успешно", а музыки нема :thinking:
В чем косяк?
Dark_Knight
04.03.2018, 21:22
C++:
BASS_Init
(
-
1
,
44100
,
0
,
GetActiveWindow
(
)
,
NULL
)
;
C++:
BASS_Init
(
-
1
,
44100
,
0
,
GetActiveWindow
(
)
,
NULL
)
;
Так же. Звука нет, хотя прошло успешно. Видимо, у меня руки из жопы растут.
Dark_Knight
04.03.2018, 22:04
Поставь звук радио на максимум и перезайди.
1. ) Как отследить отключение клиента на стороне сервера (Winsock,client-server tcp socket, C++)?
Dark_Knight
05.03.2018, 18:02
С клиента посылай сообщение о выходе или делай проверку на сервере, что есть соединение с клиентом.
Поставь звук радио на максимум и перезайди.
BASS_Init в любом случае выбивает false. Порылся я и узнал, что выдает ошибку "BASS_ERROR_ALREADY"
Что-нибудь тебе дает?
UPD: фиксанул хрень с помощью BASS_free(); до BASS_Init, проблема решена
DarkP1xel
11.03.2018, 11:00
BASS_Init в любом случае выбивает false. Порылся я и узнал, что выдает ошибку "BASS_ERROR_ALREADY"
Что-нибудь тебе дает?
UPD: фиксанул хрень с помощью BASS_free(); до BASS_Init, проблема решена
Это потому что у тебя CLEO установлено.
Jack_Savage
11.03.2018, 14:15
Как в сампе можно создать педа из сингла ?
Создать педа то изи. Но он ходить не может.
Как то можно вернуть ему возможность ходить ?
Dark_Knight
14.03.2018, 01:50
Как это перевести на C++? Пытался, но чёт никак..
Лучше найди в гугле.
Dark_Knight
14.03.2018, 01:59
JosephP91/curlcpp(https://github.com/JosephP91/curlcpp) (https://github.com/JosephP91/curlcpp)
Возможно подойдет
Dark_Knight
17.03.2018, 19:13
Кодировка не подходит.
DarkP1xel
17.03.2018, 19:16
логично.. Как исправить?
Поменять в редакторе.
BlackKnigga
17.03.2018, 19:30
На UTF-8? Менял, не помогает.
ImGui::GetIO().Fonts->GetGlyphRangesCyrillic()?
CleanLegend
18.03.2018, 00:46
На UTF-8? Менял, не помогает.
в инициализацию imgui
io.Fonts->AddFontFromFileTTF(u8"C:\\Windows\\Fonts\\Tahoma.ttf", 14.0f, NULL, io.Fonts->GetGlyphRangesCyrillic());
Dark_Knight
19.03.2018, 02:28
C++:
char
tempPatch
[
MAX_PATH
]
;
GetTempPatch
(
MAX_PATH
,
tempPatch
)
;
Dark_Knight
19.03.2018, 03:35
@Dark_Knight (https://www.blast.hk/members/34/), так тоже пробовал, выводит пустоту, хз с чем связанно.
Все норм. Хз че у тебя.
upload_2018-3-19_1-34-35.pngDark_Knight · 19 Мар 2018 в 02:35' data-fancybox="lb-post-191813" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/12505/" style="cursor: pointer;" title="upload_2018-3-19_1-34-35.png">
https://forum.antichat.xyz/attachments/27191813/
DarkP1xel
19.03.2018, 16:08
@Dark_Knight (https://www.blast.hk/members/34/), так тоже пробовал, выводит пустоту, хз с чем связанно.
У тебя AS установлен?
DarkP1xel
19.03.2018, 16:44
Це шо такое?
AntiStealer...
DarkP1xel
19.03.2018, 16:54
Исправить самостоятельно как то возможно?
Нет, доступ к %TEMP% закрыт.
Можно ли как то изменить положение объектов в зоне стрима? В плане, не так что бы оно изменилось у всех, а что бы я допустим мог с ними взаимодействовать ( допустим двигать мяч или сломать стол... )
-raymond-
23.03.2018, 17:58
warning : Невозможно найти средства сборки для Visual Studio 2017 - Windows XP (v141_xp). Установите Visual Studio 2017 - Windows XP (v141_xp), чтобы выполнить сборку с использованием средств сборки Visual Studio 2017 - Windows XP (v141_xp).
винда 7 как пофиксить
DarkP1xel
23.03.2018, 18:33
В свойствах проекта изменить вариант сборки с v141_xp на v141.
VS2017:
Как решается проблема, когда "текст в кавычках" воспринимается как const char*, а не char*, и из-за этого некоторые функции говорят о несовместимости?
В одном проекте все нормально, другой ругается на "кавычки", значит где-то что-то надо в настройках поставить?
VS2017:
Как решается проблема, когда "текст в кавычках" воспринимается как const char*, а не char*, и из-за этого некоторые функции говорят о несовместимости?
В одном проекте все нормально, другой ругается на "кавычки", значит где-то что-то надо в настройках поставить?
Считая для каких целей - в общем случае, модифицирование строкового литерала означает неопределенное поведение. Если нужно просто избавиться от const
C++:
char
*
a
=
const_cast
(
"asdasd"
)
;
То, что воспринимается как const char - это стандартом обозначено string literal - cppreference.com(http://en.cppreference.com/w/cpp/language/string_literal) (https://www.blast.hk/redirect/aHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3 VhZ2Uvc3RyaW5nX2xpdGVyYWw)
То, что одном проекте нормально - это, вероятнее всего, выключены ошибки: что-то по типу Warning Level /W0 и Treat Warning As Errors
Либо это проект именно С (/TC) Параметры /Tc, /Tp, /TC, /TP (определение типа исходного файла)(https://msdn.microsoft.com/ru-ru/library/032xwy55.aspx) (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vcnUtcnUvbGlicm FyeS8wMzJ4d3k1NS5hc3B4).
ShapeGaz
28.03.2018, 14:01
Итак, я хочу сделать перехват функции SA-MP'a через SF плагин, может кто нибудь показать пример? Допустим та же ф-ция SendClientMessage.
P.S Я так понимаю раздел скорее всего не тот, подскажите куда надо было создавать тему, пожалуйста.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot