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

  #1  
Старый 31.03.2021, 10:12
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию







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

  #2  
Старый 31.03.2021, 13:59
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

C++:





Код:
struct
poolBitmap
{
unsigned
char
nId
:
7
;
bool
bEmpty
:
1
;
}
;


+0 это new CCopPed[n];

+4 это new poolBitmap[n];

+8 это n

+12 это номер самого последнего педа в пуле, т.е. может быть такая картина:

ped nullptr nullptr ped nullptr ped

По оффсету 12 будет лежать значение 6

UPD: возможно там будет не 6, а 1, как индекс первого свободного элемента куда можно воткнуть нового педа при создании, не помню точно
 
Ответить с цитированием

  #3  
Старый 31.03.2021, 14:03
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

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

C++:





Код:
struct
poolBitmap
{
unsigned
char
nId
:
7
;
bool
bEmpty
:
1
;
}
;


+0 это new CCopPed[n];
+4 это new poolBitmap[n];
+8 это n
+12 это номер самого последнего педа в пуле, т.е. может быть такая картина:
ped nullptr nullptr ped nullptr ped
По оффсету 12 будет лежать значение 6
UPD: возможно там будет не 6, а 1, как индекс первого свободного элемента куда можно воткнуть нового педа при создании, не помню точно
Как этим пользоваться?
 
Ответить с цитированием

  #4  
Старый 31.03.2021, 14:16
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

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

Как этим пользоваться?
plugin-sdk/plugin_sa/game_sa/CPool.h at master · DK22Pac/plugin-sdk

An SDK for developing ASI/CLEO plugins for GTA San Andreas, GTA Vice City and GTA III - DK22Pac/plugin-sdk

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

  #5  
Старый 31.03.2021, 14:28
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

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

plugin-sdk/plugin_sa/game_sa/CPool.h at master · DK22Pac/plugin-sdk

An SDK for developing ASI/CLEO plugins for GTA San Andreas, GTA Vice City and GTA III - DK22Pac/plugin-sdk

github.com

Первым же делом пошел смотреть Plugin SDK, создал тему, потому что не понял как это вообще работает и как этим пользоваться. Тупое копирование меня не устраивает
 
Ответить с цитированием

  #6  
Старый 31.03.2021, 15:56
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

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

Первым же делом пошел смотреть Plugin SDK, создал тему, потому что не понял как это вообще работает и как этим пользоваться. Тупое копирование меня не устраивает
Как-то так. (Я не эксперт в этом)

Простой пример:





[CODE]
#include
#include
using
std
::
cout
;
using
std
::
endl
;
union
CColor
{
unsigned
long
color
;
struct
{
// Сколько может уместиться байтов в unsigned long -> 4
unsigned
char
alpha
;
unsigned
char
red
;
unsigned
char
green
;
unsigned
char
blue
;
}
;
CColor
(
)
{
this
->
alpha
=
255
;
this
->
red
=
255
;
this
->
green
=
255
;
this
->
blue
=
255
;
cout

alpha

red

green

blue

color



Сложный пример:





[CODE]
#include
#include
using
std
::
cout
;
using
std
::
endl
;
union
tPoolObjectFlags
{
struct
{
// Сколько байтов может поместиться в unsigned char -> 1
// Здесь утверждать ничего не стану, ибо сам хз
unsigned
char
nId
:
7
;
bool
bEmpty
:
1
;
// Возможно, имеется виду размер типа поля поделить на кол-во битов. Т.е:
// sizeof(unsigned char) / 7 -> 255 / 7
// sizeof(bool) / 1 -> 1 / 1
}
;
unsigned
char
value
;
tPoolObjectFlags
(
)
{
unsigned
char
byteId
=
2
;
bool
bEmpty
=
true
;
this
->
value
=
value
|
(
byteId
)
;
this
->
value
=
value
|
(
bEmpty

nId

bEmpty

value

value
=
0
;
this
->
nId
=
2
;
this
->
bEmpty
=
true
;
cout

nId

bEmpty

value

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

  #7  
Старый 31.03.2021, 16:02
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

[QUOTE="Musaigen"]

this->value = value | (byteId); this->value = value | (bEmpty

C++:





Код:
this
->
bEmpty
=
bEmpty
;
this
->
nId
=
byteId
;
 
Ответить с цитированием

  #8  
Старый 31.03.2021, 17:23
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

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

struct { // Сколько байтов может поместиться в unsigned char -> 1 // Здесь утверждать ничего не стану, ибо сам хз unsigned char nId : 7; bool bEmpty : 1; // Возможно, имеется виду размер типа поля поделить на кол-во битов. Т.е: // sizeof(unsigned char) / 7 -> 255 / 7 // sizeof(bool) / 1 -> 1 / 1 }; unsigned char value;
Я тут вроде разобрался немного. nValue это unsigned char, его размер 1 байт, т.е. 8 бит. Первые 7 бит nValue будет занимать nId, последний - bEmpty.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

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


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




ANTICHAT ™ © 2001- Antichat Kft.