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

  #1  
Старый 22.05.2017, 18:34
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

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

  #2  
Старый 22.05.2017, 19:00
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

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

Цитата:
Сообщение от Dark_Knight  
Это получение пакетов синхронизации других игроков, а мне нужен пакет RPC_ScrApplyAnimation, который посылает сервер конкретно мне.
 
Ответить с цитированием

  #3  
Старый 22.05.2017, 19:07
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Удали чтения ида. Все входящие РПЦ только для тебя будут работать.
 
Ответить с цитированием

  #4  
Старый 22.05.2017, 19:27
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

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

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

Удали чтения ида. Все входящие РПЦ только для тебя будут работать.
PlayerSync это не РПЦ, это просто пакет. Сервер посылает мне только пакеты других игроков, тех которые находятся рядом со мной. Пакеты с моей синхронизацией сервер мне не посылает, да и зачем ему посылать мне обратно тот пакет, который я ему только что отправил.
 
Ответить с цитированием

  #5  
Старый 22.05.2017, 19:33
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Йобанный врот билять. PlayerSync только есть ид анимации и её флаг. Ни названия анимки, ни библиотеки, где эта анимация хранится.
 
Ответить с цитированием

  #6  
Старый 22.05.2017, 19:45
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

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

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

Йобанный врот билять. PlayerSync только есть ид анимации и её флаг. Ни названия анимки, ни библиотеки, где эта анимация хранится.
Я знаю, что есть в PlayerSync. Я же говорю, я не могу получить свой PlayerSync. Я его должен САМ заполнить и отправить серверу. И отправлять примерно раз в 40мс. Единственный способ узнать какую анимацию мне присвоил сервер, это получить РПЦ.
 
Ответить с цитированием

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

Репутация: 133


По умолчанию

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

Я знаю, что есть в PlayerSync. Я же говорю, я не могу получить свой PlayerSync. Я его должен САМ заполнить и отправить серверу. И отправлять примерно раз в 40мс. Единственный способ узнать какую анимацию мне присвоил сервер, это получить РПЦ.
Можешь хукать свой исходящий player_sync
 
Ответить с цитированием

  #8  
Старый 22.05.2017, 20:01
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

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

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

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

  #9  
Старый 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
 
Ответить с цитированием

  #10  
Старый 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
)
;
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.