HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #3411  
Старый 14.04.2019, 20:17
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Цитата:
Сообщение от Vintik  

Всем здравствуйте. Надеюсь, эксперты помогут мне в решении проблемы. Суть в том, что хочу как-то использовать встоенные в GTA SA функции (пример: написать белый текст снизу экрана) своей программой. У DarkP1xel`я заметил следующее:

Но это для DLL библиотеки, я же хочу для стандартного "консольного приложения".
Google: CreateRemoteThread
 
Ответить с цитированием

  #3412  
Старый 14.04.2019, 20:47
Cake_
Участник форума
Регистрация: 04.04.2017
Сообщений: 263
С нами: 4793630

Репутация: 133
По умолчанию

Как получить коорды объекта / модели? Попытался сам написать, что-то не то вообщем

C++:





Код:
float
pos
[
3
]
;
for
(
int
i
=
0
;
i

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
iIsListed
[
i
]
!=
1
)
continue
;
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
==
NULL
)
continue
;
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
pGTAEntity
==
NULL
)
continue
;
pos
[
0
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
0
]
;
pos
[
1
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
1
]
;
pos
[
2
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
2
]
;


 
Ответить с цитированием

  #3413  
Старый 15.04.2019, 00:11
SiTrak
Участник форума
Регистрация: 14.01.2018
Сообщений: 192
С нами: 4384333

Репутация: 113
По умолчанию

Цитата:
Сообщение от cakebou  

Как получить коорды объекта / модели? Попытался сам написать, что-то не то вообщем

C++:





Код:
float
pos
[
3
]
;
for
(
int
i
=
0
;
i

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
iIsListed
[
i
]
!=
1
)
continue
;
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
==
NULL
)
continue
;
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
pGTAEntity
==
NULL
)
continue
;
pos
[
0
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
0
]
;
pos
[
1
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
1
]
;
pos
[
2
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
2
]
;



C++:





Код:
if
(
pObj
->
iModel
==
objes
[
4
]
)
{
memcpy
(
pos
,
&
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
pGTAEntity
->
base
.
matrix
[
12
]
,
sizeof
(
float
)
*
3
)
;
//    uint16_t    model_id = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->pGTAEntity->base.model_alt_id;
SF
->
getGame
(
)
->
convert3DCoordsToScreen
(
position
[
0
]
,
position
[
1
]
,
position
[
2
]
,
&
obmypos
[
0
]
,
&
obmypos
[
1
]
)
;
SF
->
getGame
(
)
->
convert3DCoordsToScreen
(
pos
[
0
]
,
pos
[
1
]
,
pos
[
2
]
,
&
obsreen
[
0
]
,
&
obsreen
[
1
]
)
;
if
(
IsOnScreen
(
i
)
)
{
SF
->
getRender
(
)
->
DrawLine
(
obmypos
[
0
]
,
obmypos
[
1
]
,
obsreen
[
0
]
,
obsreen
[
1
]
,
sizelin
[
4
]
,
0xFF00FF00
)
;
}
}
 
Ответить с цитированием

  #3414  
Старый 15.04.2019, 13:44
index
Новичок
Регистрация: 18.10.2015
Сообщений: 6
С нами: 5563739

Репутация: 0
По умолчанию

Небольшая абстрактная задачка: имеется объект Cell, полем которого является указатель на объект (pMan) одного из возможных других классов с разным поведением и полями(virtual не предлагать ). Когда указатель на Cell передадут в какую-либо функцию (в приведенном примере все происходит в main) эта функция должна будет вызывать конкретный метод объекта класса, на который указывает pMan, но в зависимости от того, на какой класс там вообще идет указание.

Код (не цепляйтесь к тому, что все паблик, суть вопроса в самой концепции):

C++:





Код:
#include 
using
namespace
std
;
class
Man1
{
public
:
void
do1
(
)
{
cout

type
==
Cell
::
Type
::
man1
)
// false
static_cast

(
cell
->
pMan
)
->
do1
(
)
;
else
if
(
cell
->
type
==
Cell
::
Type
::
man2
)
// true
static_cast

(
cell
->
pMan
)
->
do2
(
)
;
// выведет Man2
return
0
;
}


И сам вопрос: как реализовать подобную вещь более адекватно и канонично? В приведенном примере конструктор Cell может схавать

C++:





Код:
Cell
(
Cell
::
Type
::
man1
,
new
Man2
)
;


и в дальнейшем получить неопределенное поведение. Хотелось бы видеть подобные ошибки на этапе компиляции.
 
Ответить с цитированием

  #3415  
Старый 16.04.2019, 18:04
babulya_headdyson
Постоянный
Регистрация: 06.03.2018
Сообщений: 464
С нами: 4310969

Репутация: 83
По умолчанию

Как из данной строки получить "97.1445.1541.67" ?

Код:





Код:
{"as":"AS21127 JSC \"Zap-Sib TransTeleCom\", FFFFFFF","city":"FFFFFFF","country":"SSSSSS","countryCode":"RU","isp":"JSC \"Zap-Sib TransTeleCom\"","lat":12.1234,"lon":23.34,"org":"JSC Zap-Sib TransTeleCom","query":"97.1445.1541.67","region":"WER","regionName":"QWERTY","status":"success","timezone":"Asia/ESFFF","zip":"653008"}
 
Ответить с цитированием

  #3416  
Старый 16.04.2019, 18:10
imring
Флудер
Регистрация: 03.08.2016
Сообщений: 2,363
С нами: 5145387

Репутация: 183


По умолчанию

Цитата:
Сообщение от babulya  

Как из данной строки получить "97.1445.1541.67" ?

Код:





Код:
{"as":"AS21127 JSC \"Zap-Sib TransTeleCom\", FFFFFFF","city":"FFFFFFF","country":"SSSSSS","countryCode":"RU","isp":"JSC \"Zap-Sib TransTeleCom\"","lat":12.1234,"lon":23.34,"org":"JSC Zap-Sib TransTeleCom","query":"97.1445.1541.67","region":"WER","regionName":"QWERTY","status":"success","timezone":"Asia/ESFFF","zip":"653008"}

https://github.com/nlohmann/json
 
Ответить с цитированием

  #3417  
Старый 16.04.2019, 18:45
babulya_headdyson
Постоянный
Регистрация: 06.03.2018
Сообщений: 464
С нами: 4310969

Репутация: 83
По умолчанию

Цитата:
Сообщение от imring  
через регулярки можно же вроде без json. На LUA делал - работало.

Lua:





Код:
ip
=
text
:
match
(
'"query":"(.*)","region"'
)
 
Ответить с цитированием

  #3418  
Старый 17.04.2019, 20:01
Natami
Постоянный
Регистрация: 02.11.2018
Сообщений: 375
С нами: 3963063

Репутация: 18
По умолчанию

DLL

Есть ли уроки по созданию меню (не imgui)?
 
Ответить с цитированием

  #3419  
Старый 17.04.2019, 23:41
_=Gigant=_
Участник форума
Регистрация: 19.01.2017
Сообщений: 130
С нами: 4901705

Репутация: 98
По умолчанию

Цитата:
Сообщение от Natami  

DLL

Есть ли уроки по созданию меню (не imgui)?
take a look in sobeit source or check unknown cheats -> directx forum
 
Ответить с цитированием

  #3420  
Старый 18.04.2019, 03:18
san0
Постоянный
Регистрация: 15.12.2013
Сообщений: 412
С нами: 6530249

Репутация: 133
По умолчанию

Цитата:
Сообщение от index  

Небольшая абстрактная задачка
Мне кажется, немножко детали упущены по поводу того, как это все должно использоваться. Это к тому, что, возможно, задачу можно будет свести к использованию обвертки с помощью std::bind или лямбда-выражения, либо же, всегда применить другую парадигму.

В любом случае, хотелось бы посоветовать либо использовать типобезопасный variant

C++:





Код:
#include 
using
Cell
=
std
::
variant

;
void
usage_one
(
Cell cell
)
{
if
(
auto
man1
=
std
::
get_if

(
&
cell
)
)
{
(
*
man1
)
->
do1
(
)
;
}
else
if
(
auto
man2
=
std
::
get_if

(
&
cell
)
)
{
(
*
man2
)
->
do2
(
)
;
}
}


Либо, если очень хочется написать обвертку, то что-то такое

C++:





Код:
#include 
namespace
std
{
template

struct
is_any
:
std
::
disjunction

.
.
.
>
{
}
;
}
template

class
CellWrapper
{
public
:
C
*
pMan
;
CellWrapper
(
C
*
ptr
)
:
pMan
(
ptr
)
{
// static_assert(std::is_class::value);
static_assert
(
std
::
is_any

::
value
,
"CellWrapper could be created only with Man1 and Man2"
)
;
}
;
C
*
operator
->
(
)
{
return
this
->
pMan
;
}
}
;
template

void
usage_two
(
CellWrapper

*
cell
)
{
if
constexpr
(
std
::
is_same

(
)
)
{
(
*
cell
)
->
do1
(
)
;
}
else
if
constexpr
(
std
::
is_same

(
)
)
{
(
*
cell
)
->
do2
(
)
;
}
}




Использование

C++:





Код:
int
main
(
void
)
{
{
auto
cell
=
Cell
(
new
Man1
)
;
usage_one
(
cell
)
;
}
{
auto
cell
=
CellWrapper
(
new
Man2
)
;
usage_two
(
&
cell
)
;
// как и просилось, именно указатель
}
}


Поправьте, если это не то, что требовалось.

P.S. В примерах выше по причине использования new была продемонстрирована утечка памяти
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.