 |
|

22.05.2017, 20:38
|
|
Постоянный
Регистрация: 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
|
|
|

23.05.2017, 06:04
|
|
Познающий
Регистрация: 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, а потом его разобрать по битам, но это неудобно. Может есть вариант проще или я что-то не правильно делаю?
|
|
|

23.05.2017, 18:32
|
|
Познающий
Регистрация: 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
)
;
|
|
|

23.05.2017, 23:47
|
|
Участник форума
Регистрация: 06.01.2016
Сообщений: 101
С нами:
5447569
Репутация:
68
|
|
Может кто-нибудь подсказать код для SAMP'a, который отвечает за выключение NameTag'ов над головой персонажа?
|
|
|

25.05.2017, 01:51
|
|
Постоянный
Регистрация: 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
;
}
;
|
|
|

25.05.2017, 01:52
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Ну во первых - char может хранить только 1 символ.
|
|
|

25.05.2017, 01:55
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Сообщение от legend2360
Ну во первых - char может хранить только 1 символ.
а char[144] создаст таблицу в которой будет 144 ячейки, или переменную на 144 байта?
|
|
|

25.05.2017, 02:00
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Массив создаст размером 144 байта
|
|
|

25.05.2017, 02:02
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Сообщение от legend2360
Массив создаст размером 144 байта
грустно. Спасибо.
|
|
|

25.05.2017, 13:50
|
|
Флудер
Регистрация: 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)
|
|
|
|