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

  #1  
Старый 27.03.2017, 22:07
plakapenka
Новичок
Регистрация: 17.07.2013
Сообщений: 16
С нами: 6748131

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

Помогите распарсить пакет RPC_SetObjectMaterial

тип вот так ведь делать нужно?

C++:





Код:
char
data
[
255
]
;
bsData
.
Read
(
data
)
;


но в пакете длина строки не передается, а без неё как?

или как-то по другому можн?

скажите в каком направлении копать хотябы

И вообще как узнать в каком виде пакет передается?

знаю что в pawn функция выглядит так

PHP:





Код:
SetObjectMaterial
(
myobject
,
0
,
19341
,
"egg_texts"
,
"easter_egg01"
,
0xFFFFFFFF
)
;


значит и в пакете как-то так должно передаваться
 
Ответить с цитированием

  #2  
Старый 27.03.2017, 22:16
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Читай каждый параметр отдельно. По другому никак.
 
Ответить с цитированием

  #3  
Старый 27.03.2017, 22:49
BlackKnigga
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами: 5441999

Репутация: 133


По умолчанию

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

Помогите распарсить пакет RPC_SetObjectMaterial

тип вот так ведь делать нужно?

C++:





Код:
char
data
[
255
]
;
bsData
.
Read
(
data
)
;


но в пакете длина строки не передается, а без неё как?
или как-то по другому можн?
скажите в каком направлении копать хотябы

И вообще как узнать в каком виде пакет передается?
знаю что в pawn функция выглядит так

PHP:





Код:
SetObjectMaterial
(
myobject
,
0
,
19341
,
"egg_texts"
,
"easter_egg01"
,
0xFFFFFFFF
)
;


значит и в пакете как-то так должно передаваться
Разбирай рпц RakLogger'ом
 
Ответить с цитированием

  #4  
Старый 27.03.2017, 23:19
plakapenka
Новичок
Регистрация: 17.07.2013
Сообщений: 16
С нами: 6748131

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

Чот яснее не стало:wall:

http://blob:https://www.blast.hk/86bc2eab-2f39-4193-a489-05c720c8f9a0
 
Ответить с цитированием

  #5  
Старый 27.03.2017, 23:53
plakapenka
Новичок
Регистрация: 17.07.2013
Сообщений: 16
С нами: 6748131

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

как так же распарсить через соб?

C++:





Код:
BitStream
bsData
(
rpcParams
->
input
,
rpcParams
->
numberOfBitsOfData
/
8
,
false
)
;
int
asd1
;
bsData
.
Read
(
asd1
)
;
intasd2
;
bsData
.
Read
(
asd2
)
;
char
asd3
[
20
]
;
bsData
.
Read
(
asd3
)
;
char
asd4
[
20
]
;
bsData
.
Read
(
asd4
)
;
addMessageToChatWindow
(
"%d, %d, %s, %s"
,
asd1
,
asd2
,
asd3
,
asd4
)
;


дает набор каракуль

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

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

Репутация: 183


По умолчанию

У тебя массив не закрыт нуль-терминирующим символом, поэтому и выводит лишнее.
 
Ответить с цитированием

  #7  
Старый 28.03.2017, 01:37
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Плюс сначала надо читать длину строки, а потом уже строку.
 
Ответить с цитированием

  #8  
Старый 28.03.2017, 01:38
plakapenka
Новичок
Регистрация: 17.07.2013
Сообщений: 16
С нами: 6748131

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

но я ведь не знаю длинну получаемой строки. Как его тогда закрыть?

как узнать длину?
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

Обычно перед строкой записывается её длина (byte/short/integer, зависит от структуры RPC/пакета)
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.