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

  #1571  
Старый 22.05.2017, 20:38
BlackKnigga
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами: 5441999

Репутация: 133


По умолчанию

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

Я все это делаю в RakSAMP,е, я сам должен заполнять свой PlayerSync, если я его не заполню данными о своей анимации (которые я должен получить из РПЦ), то просто отправлю нулевой ид анимации.
Lua:





Код:
INCOMING_RPCS
[
RPC
.
APPLYANIMATION
]
=
{
'onApplyPlayerAnimation'
,
{
playerId
=
'int16'
}
,
{
animLib
=
'string8'
}
,
{
animName
=
'string8'
}
,
{
loop
=
'bool'
}
,
{
lockX
=
'bool'
}
,
{
lockY
=
'bool'
}
,
{
freeze
=
'bool'
}
,
{
time
=
'int32'
}
}


Из samp.lua
 
Ответить с цитированием

  #1572  
Старый 23.05.2017, 06:04
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

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

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

Lua:





Код:
INCOMING_RPCS
[
RPC
.
APPLYANIMATION
]
=
{
'onApplyPlayerAnimation'
,
{
playerId
=
'int16'
}
,
{
animLib
=
'string8'
}
,
{
animName
=
'string8'
}
,
{
loop
=
'bool'
}
,
{
lockX
=
'bool'
}
,
{
lockY
=
'bool'
}
,
{
freeze
=
'bool'
}
,
{
time
=
'int32'
}
}


Из samp.lua
Я в первом посте написал, что взял структуру пакета из samp.lua, но у меня неправильно считываются булевы параметры.

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

Как получить все данные из пакета ApplyAnimation? В RakSAMP,е функции обработки этого пакета нет. Попробовал сделать порядок считывания данных как в events.lua.
В итоге все нормально считывается, кроме четырех булевых значений: loop, lockX, lockY, freeze. Они считываются неправильно, причем они все одновременно либо true, либо false. Если вместо четырех считываний bool сделать одно BYTE, то по первым 4 битам этого байта можно определить значения, но тогда неправильно считывается time. По идее можно все четыре булевых значения и время записать в один int, а потом его разобрать по битам, но это неудобно. Может есть вариант проще или я что-то не правильно делаю?
 
Ответить с цитированием

  #1573  
Старый 23.05.2017, 18:32
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

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

Нашел решение проблемы, оказалось что у BitStream есть метод ReadBit, который считывает ровно один бит и записывает его в bool. Вот рабочий код.

C++:





Код:
WORD playerId
;
BYTE animLibLenght
;
char
animLib
[
257
]
;
BYTE animNameLenght
;
char
animName
[
257
]
;
float
delta
;
bool
loop
,
lockX
,
lockY
,
freeze
;
WORD time
;
bsData
.
Read
(
playerId
)
;
bsData
.
Read
(
animLibLenght
)
;
bsData
.
Read
(
animLib
,
animLibLenght
)
;
animLib
[
animLibLenght
]
=
'\0'
;
bsData
.
Read
(
animNameLenght
)
;
bsData
.
Read
(
animName
,
animNameLenght
)
;
animName
[
animNameLenght
]
=
'\0'
;
bsData
.
Read
(
delta
)
;
loop
=
bsData
.
ReadBit
(
)
;
lockX
=
bsData
.
ReadBit
(
)
;
lockY
=
bsData
.
ReadBit
(
)
;
freeze
=
bsData
.
ReadBit
(
)
;
bsData
.
Read
(
time
)
;
 
Ответить с цитированием

  #1574  
Старый 23.05.2017, 23:47
MrYurkoo
Участник форума
Регистрация: 06.01.2016
Сообщений: 101
С нами: 5447569

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

Может кто-нибудь подсказать код для SAMP'a, который отвечает за выключение NameTag'ов над головой персонажа?
 
Ответить с цитированием

  #1575  
Старый 25.05.2017, 01:51
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

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

пытаюсь использовать указатель на строку вместо самой строки, но не работает - игра крашит

как исправить?

C++:





Код:
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
{
char
sstring
;
char
*
pointer1
=
&
sstring
;
strcat
(
pointer1
,
"wtf "
)
;
//int watafakerNumbaVan = rand();
//int secondMistaHellwin = rand();
//printf(pointerToStringForRenderBlenderBenderSenderblamberflambermbermbermbermber, "%d", watafakerNumbaVan);
//printf(pointerToStringForRenderBlenderBenderSenderblamberflambermbermbermbermber, "%d", secondMistaHellwin);
pFont
->
Print
(
pointer1
,
D3DCOLOR_ARGB
(
117
,
0
,
92
,
0
)
,
700
,
0
,
false
)
;
SF
->
getRender
(
)
->
EndRender
(
)
;
}
;
return
true
;
}
;
 
Ответить с цитированием

  #1576  
Старый 25.05.2017, 01:52
itsLegend
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами: 6915558

Репутация: 183


По умолчанию

Ну во первых - char может хранить только 1 символ.
 
Ответить с цитированием

  #1577  
Старый 25.05.2017, 01:55
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

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

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

Ну во первых - char может хранить только 1 символ.
а char[144] создаст таблицу в которой будет 144 ячейки, или переменную на 144 байта?
 
Ответить с цитированием

  #1578  
Старый 25.05.2017, 02:00
itsLegend
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами: 6915558

Репутация: 183


По умолчанию

Массив создаст размером 144 байта
 
Ответить с цитированием

  #1579  
Старый 25.05.2017, 02:02
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

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

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

Массив создаст размером 144 байта
грустно. Спасибо.
 
Ответить с цитированием

  #1580  
Старый 25.05.2017, 13:50
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Советую юзать std::string

Код:





Код:
std::string str = "wtf";
 pFont->Print(str.c_str(), D3DCOLOR_ARGB(117, 0, 92, 0), 700, 0);
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

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

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

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

×

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

Сумма USDT:

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

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