|
Баг с трупами |
|
|
Aimed |
21.5.2015, 2:02
|
Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012 Группа: Пользователи Наличность: 8676
Пользователь №: 15.607
|
Когда имеется одетый труп гуманоида со шмотками и вы убегаете за экран, а потом прибегаете обратно - труп всегда голый, пока его не дабл кликнешь. Кто-нибудь знает в чем дело? (IMG: style_emoticons/default/biggrin.gif) Вопрос номер 2. Как сделать что бы труп гуманоида был одет, а шмоток в трупе не было и их нельзя было вытащить инжектом. Давай Сотерик, я в тебя верю. 1й вопрос тест, его нашёл и решил. Просто интересно что вы на это скажите (IMG: style_emoticons/default/smile.gif) Нашёл когда пытался сделать вопрос номер 2.
|
|
|
|
StaticZ |
21.5.2015, 11:49
|
Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009 Группа: Пользователи Наличность: 0 Из: РФ, Москва
Пользователь №: 11.948
|
Цитата(Aimed @ 21.5.2015, 2:02) Когда имеется одетый труп гуманоида со шмотками и вы убегаете за экран, а потом прибегаете обратно - труп всегда голый, пока его не дабл кликнешь.
Кто-нибудь знает в чем дело?
Скорее всего дело в том что по тем или иным причинам не отсылается или не коректно отсылается экипировка, а чем это вызвано тут уже надо в дебагаре ковыряться... Вообще что в ранке что в сфере очень много косяков в сетевом протоколе - к примеру дублирующиеся пакеты, отсылка инфы об эквипе до информации о мобайле (маразм усиливается тем что там помимо прочего шлется сериал предка, а клиент естественного информации о таком сериале еще не получал), а работает это по той причине что это же отсылается второй раз после отправки информации о мобайле. При логине вся эта каша к примеру шлется раза 3-4. При дабл клике идет "пересбор" анимаций и гампов, так что в принципе можно обойтись не очень красивым решением - принудительно заставить клиент сделать это. Цитата(Aimed @ 21.5.2015, 2:02) Вопрос номер 2. Как сделать что бы труп гуманоида был одет, а шмоток в трупе не было и их нельзя было вытащить инжектом. Давай Сотерик, я в тебя верю. 1й вопрос тест, его нашёл и решил. Просто интересно что вы на это скажите (IMG: style_emoticons/default/smile.gif) Нашёл когда пытался сделать вопрос номер 2. С ходу в голову приходят три решения: 1) Через фейковые предметы к примеру (невидимые тайлы), с запретом перемещения. Даже если инжект будет собирать их по сериалам, сервер будет отклонять все запросы на попытки их перемещения, ну а поскольку они невидимы визуально будет выглядеть как-будто ничего и нет. 2) Использование фейкового трупа, вместо реального трупа помещаем просто "маникен" - смотрите принцип работы статуй, поменяйте анимацию и получите трупы без бекапа, при желании можно отлавить дабл клик и открыть фековый бекап трупа без экипировки. 3) В принципе возможно просто запретить открытие бекапа, возможно даже проканает тупо его удаление у трупа. Сообщение отредактировал StaticZ - 21.5.2015, 11:52
--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.Game isn't a dream, it is the reality, reality which is coming while we dream...
|
|
|
|
StaticZ |
21.5.2015, 15:25
|
Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009 Группа: Пользователи Наличность: 0 Из: РФ, Москва
Пользователь №: 11.948
|
Цитата(Aimed @ 21.5.2015, 13:00) У трупа нет бэкпака.
Вечером отвечу развернуто.
Бекпак всмысле контейнер. У трупа он конечно другой, но должен быть, иначе его не возможно былобы лутать.
--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.Game isn't a dream, it is the reality, reality which is coming while we dream...
|
|
|
|
Aimed |
21.5.2015, 20:59
|
Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012 Группа: Пользователи Наличность: 8676
Пользователь №: 15.607
|
Цитата(StaticZ @ 21.5.2015, 10:49) Скорее всего дело в том что по тем или иным причинам не отсылается или не коректно отсылается экипировка, а чем это вызвано тут уже надо в дебагаре ковыряться... Вообще что в ранке что в сфере очень много косяков в сетевом протоколе - к примеру дублирующиеся пакеты, отсылка инфы об эквипе до информации о мобайле (маразм усиливается тем что там помимо прочего шлется сериал предка, а клиент естественного информации о таком сериале еще не получал), а работает это по той причине что это же отсылается второй раз после отправки информации о мобайле. При логине вся эта каша к примеру шлется раза 3-4. При дабл клике идет "пересбор" анимаций и гампов, так что в принципе можно обойтись не очень красивым решением - принудительно заставить клиент сделать это.
Это всё и так известно (IMG: style_emoticons/default/smile.gif) Цитата(StaticZ @ 21.5.2015, 10:49) С ходу в голову приходят три решения: 1) Через фейковые предметы к примеру (невидимые тайлы), с запретом перемещения. Даже если инжект будет собирать их по сериалам, сервер будет отклонять все запросы на попытки их перемещения, ну а поскольку они невидимы визуально будет выглядеть как-будто ничего и нет. 2) Использование фейкового трупа, вместо реального трупа помещаем просто "маникен" - смотрите принцип работы статуй, поменяйте анимацию и получите трупы без бекапа, при желании можно отлавить дабл клик и открыть фековый бекап трупа без экипировки. 3) В принципе возможно просто запретить открытие бекапа, возможно даже проканает тупо его удаление у трупа.
Так то и я всем могу помочь. 1)Невидимые тайлы будет видно в отображении количества предметов в трупе, не пойдет. + отображение одетых шмоток на трупе не будет работать, как только ты сменишь айдишники реальным вещам - всё заканчивается. 2)Как это сделать? Такой вариант не сработает. Я уже 3й вечер после работы в дебаге сижу, уже пакеты все разобрал, очереди для обновления айтемов в мире, как труп обновлять и нашли баг с CorpseContent пакетом. Он не работает как обычный 0x3C пакет ContainerContent6017. Нельзя просто сделать *одетый маникен* в УО. Каждая вещь на трупе, - это репрезентация реального айтема, который должен находится в этом конкретном трупе 3)Не пойдёт, в трупе может быть другой лут, как лут самого моба и его игроки могут лутать. Просто сам моб ещё одет в определенные шмотки, которые не должны попасть к игрокам, но должны быть видны на теле. + если удалить все шмотки Items( то что ты называешь *бекапом*) у трупа - их и на трупе видно не будет -)) Иногда всё-же лучше сначало самому залезть в дебаг, прежде чем советы давать. (IMG: style_emoticons/default/wink.gif)
|
|
|
|
Aimed |
21.5.2015, 21:26
|
Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012 Группа: Пользователи Наличность: 8676
Пользователь №: 15.607
|
Soteric, надежда всё ещё есть (IMG: style_emoticons/default/smile.gif) Кстати, я придумал решение этой проблемы. Нужно сделать класс-наследник у трупа, у которого будут оверрайды на дабл клик, клик, опен и так далее. Этот оверрайд будет открывать игроку другую сумку/показывать количество ЕЁ предметов как кол-во предметов трупа, что хранится в трупе. А у самой сумки просто гамп трупа прописать и лут моба, - имеем одетых трупов. (IMG: style_emoticons/default/smile.gif) В классе самого трупа нужно сделать метод-статику для создания этого трупа и через виртуальное свойство для делегата-создателя трупа в мобайле - сделать оверрайд этого свойства у нужных мобайлов(т.е. те у которых будут одетые трупы). Но баг с CorpseContent всё ещё в силе. Кто сможет обьяснить почему он из-за EquipItems нормально не работает, в то время как ContainerContent6017 используя Items - работает, - тот нереально крут (IMG: style_emoticons/default/smile.gif)
|
|
|
|
StaticZ |
21.5.2015, 22:31
|
Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009 Группа: Пользователи Наличность: 0 Из: РФ, Москва
Пользователь №: 11.948
|
Цитата(Aimed @ 21.5.2015, 20:59) 1)Невидимые тайлы будет видно в отображении количества предметов в трупе, не пойдет. + отображение одетых шмоток на трупе не будет работать, как только ты сменишь айдишники реальным вещам - всё заканчивается. Тайлдату надо править, чтобы у таких шмототок анимация была. Цитата(Aimed @ 21.5.2015, 20:59) 2)Как это сделать? Такой вариант не сработает. Я уже 3й вечер после работы в дебаге сижу, уже пакеты все разобрал, очереди для обновления айтемов в мире, как труп обновлять и нашли баг с CorpseContent пакетом. Он не работает как обычный 0x3C пакет ContainerContent6017. Нельзя просто сделать *одетый маникен* в УО. Каждая вещь на трупе, - это репрезентация реального айтема, который должен находится в этом конкретном трупе Вы смотрите не трупы а статуи. Если конкретнее то пакет BF.19.05.FF. В ранке есть рабочий пример. Цитата(Aimed @ 21.5.2015, 20:59) 3)Не пойдёт, в трупе может быть другой лут, как лут самого моба и его игроки могут лутать. Просто сам моб ещё одет в определенные шмотки, которые не должны попасть к игрокам, но должны быть видны на теле. + если удалить все шмотки Items( то что ты называешь *бекапом*) у трупа - их и на трупе видно не будет -)) Иногда всё-же лучше сначало самому залезть в дебаг, прежде чем советы давать. (IMG: style_emoticons/default/wink.gif) Все зависит от того как удалять. Если вы тупо удалите, то да ранка сама их уберет. Тут нужно обойти стандартную логику ранки, чтобы их не было в бекапе но при этом что бы сервак их отсылал как эквип анимации. PS Можно также делать два разных трупа - один отсылать другим игрокам а другой владельцу. В случае проблем может помочь с любым вариантом. Цитата(Aimed @ 21.5.2015, 20:59) Иногда всё-же лучше сначало самому залезть в дебаг, прежде чем советы давать. (IMG: style_emoticons/default/wink.gif) Советы это не готовые решения их цель - помощь в определении в какую сторону копать. К тому же я без понятия как работает инжект. Цитата(Aimed @ 21.5.2015, 21:26) Каждая вещь на трупе, - это репрезентация реального айтема, который должен находится в этом конкретном трупе На самом деле не так, айтемы одетые на чаре хранятся в клиенте в специальной области памяти в классе мобайла. При этом где эти сами айтемы роли не играет, но поскольку идентификация идет по сериалу, они конечно должны быть переданы сервером клиенту. Вообщем это не пустой треп - сам какраз сейчас с этим ковыряюсь и мне спокойно удалось одеть лежащий на полу предмет (конечно путем хака клиента)... Цитата(Aimed @ 21.5.2015, 21:26) Но баг с CorpseContent всё ещё в силе. Кто сможет обьяснить почему он из-за EquipItems нормально не работает, в то время как ContainerContent6017 используя Items - работает, - тот нереально крут smile.gif
Скорее потому что так работает клиент )) В принципе это здраво - эквип у трупа никто не будет менять, а при смерти наверное летит этот пакет (ContainerContent6017).. Вообщем сильно не заморачивайтесь - клиент писали вредные разрабы для себя, поэтому о нас никто не думал и на всякие извращения никто не рассчитывал.
--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.Game isn't a dream, it is the reality, reality which is coming while we dream...
|
|
|
|
StaticZ |
21.5.2015, 22:43
|
Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009 Группа: Пользователи Наличность: 0 Из: РФ, Москва
Пользователь №: 11.948
|
Цитата(Aimed @ 21.5.2015, 22:36) Прикол тут в том, что на сфере этого бага нету, а пакеты посылаются теже самые (IMG: style_emoticons/default/dry.gif) Я не знаю как понимать про пакет *BF.19.05.FF*, можешь пояснить? Я про пакеты с таким значением ниразу не слышал. Ну со стороны клиента нет разницы между сферой и ранкой, разница лишь в отсылаемых ими пакетах. Так что если на сфере работает то либо проглядели какое-то различие в пакетах (я имею в виду отсылаемых пакетов, т.е. надо через снифер проверять, а не тупо сравнивать описание пакетов в коде сферы и ранки) или проверяли на разных клиентах. Цитата(Aimed @ 21.5.2015, 22:36) Я не знаю как понимать про пакет *BF.19.05.FF*, можешь пояснить? Я про пакеты с таким значением ниразу не слышал.
Из гайда Вятта: (IMG: http://pix.academ.org/img/2015/05/22/5f48141a07cd7dc9dde57670ab80f0f9.png) Это все есть в ранке, смотрите как работают статуи, именно для этого он и юзается на оси (статуя - неподвижная анимация чара)
--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.Game isn't a dream, it is the reality, reality which is coming while we dream...
|
|
|
|
Aimed |
21.5.2015, 22:49
|
Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012 Группа: Пользователи Наличность: 8676
Пользователь №: 15.607
|
Цитата(StaticZ @ 21.5.2015, 21:31) Тайлдату надо править, чтобы у таких шмототок анимация была.
Для меня это не вариант. Цитата(StaticZ @ 21.5.2015, 21:31) На самом деле не так, айтемы одетые на чаре хранятся в клиенте в специальной области памяти в классе мобайла. При этом где эти сами айтемы роли не играет, но поскольку идентификация идет по сериалу, они конечно должны быть переданы сервером клиенту. Вообщем это не пустой треп - сам какраз сейчас с этим ковыряюсь и мне спокойно удалось одеть лежащий на полу предмет (конечно путем хака клиента)... Когда BaseCreature мобайла убивают - его просто удаляет из мира. В случае с трупом, труп каким-то образом получает анимацию убитого мобайла - как я пока так и не выяснил. 0xBF это такой общий пакет, в него много чего можно засунуть, я так понял. Вот одна из(наверное 30 его имплементаций, как раз та что ты выложил) Код Subcommand: 0x19: Extended stats BYTE[1] subsubcommand (0x2 for 2D client, 0x5 for KR client) BYTE[4] serial BYTE[1] unknown (always 0) BYTE[1] Lock flags (0 = up, 1 = down, 2 = locked, FF = update mobile status animation ( KR only )
Lock flags = 00SSDDII ( in binary ) 00 = up 01 = down 10 = locked
If(subsubcommand = 0x05 (KR))
If(Lock flags = 0xFF) //Update mobile status animation BYTE[1] Status // Unveryfied if lock flags == FF the locks will be handled here BYTE[1] unknown (0x00) BYTE[1] Animation BYTE[1] unknown (0x00) BYTE[1] Frame else BYTE[1] unknown (0x00) BYTE[4] unknown (0x00000000) endif
endif Всё инфо о пакете тут
|
|
|
|
Aimed |
21.5.2015, 23:40
|
Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012 Группа: Пользователи Наличность: 8676
Пользователь №: 15.607
|
РанУОшный баг с голыми трупами пофиксил. Теперь трупы не становятся голыми, если заного зайти в зону апдейт ренжа. Вот фикс: Код public sealed class CorpseContent : Packet { public CorpseContent( Mobile beholder, Corpse beheld ) : base( 0x3C ) { List<Item> items = beheld.EquipItems; int count = items.Count;
if( beheld.Hair != null && beheld.Hair.ItemID > 0 ) count++; if( beheld.FacialHair != null && beheld.FacialHair.ItemID > 0 ) count++;
EnsureCapacity( 5 + (count * 20) ); //расширям пакет, вместо 19 делаем 20.
long pos = m_Stream.Position;
int written = 0;
m_Stream.Write( (ushort)0 );
for( int i = 0; i < items.Count; ++i ) { Item child = items[i];
if( !child.Deleted && child.Parent == beheld && beholder.CanSee( child ) ) { m_Stream.Write( (int)child.Serial ); m_Stream.Write( (ushort)child.ItemID ); m_Stream.Write( (byte)0 ); // signed, itemID offset m_Stream.Write( (ushort)child.Amount ); m_Stream.Write( (short)child.X ); m_Stream.Write( (short)child.Y ); m_Stream.Write((byte)0); // Grid Location? //добавление этой строки + расширение пакета сверху m_Stream.Write( (int)beheld.Serial ); m_Stream.Write( (ushort)child.Hue );
++written; } }
if( beheld.Hair != null && beheld.Hair.ItemID > 0 ) { m_Stream.Write( (int)HairInfo.FakeSerial( beheld.Owner ) - 2 ); m_Stream.Write( (ushort)beheld.Hair.ItemID ); m_Stream.Write( (byte)0 ); // signed, itemID offset m_Stream.Write( (ushort)1 ); m_Stream.Write( (short)0 ); m_Stream.Write( (short)0 ); m_Stream.Write( (int)beheld.Serial ); m_Stream.Write( (ushort)beheld.Hair.Hue );
++written; }
if( beheld.FacialHair != null && beheld.FacialHair.ItemID > 0 ) { m_Stream.Write( (int)FacialHairInfo.FakeSerial( beheld.Owner ) - 2 ); m_Stream.Write( (ushort)beheld.FacialHair.ItemID ); m_Stream.Write( (byte)0 ); // signed, itemID offset m_Stream.Write( (ushort)1 ); m_Stream.Write( (short)0 ); m_Stream.Write( (short)0 ); m_Stream.Write( (int)beheld.Serial ); m_Stream.Write( (ushort)beheld.FacialHair.Hue );
++written; }
m_Stream.Seek( pos, SeekOrigin.Begin ); m_Stream.Write( (ushort)written ); } } Сниффером сферовские пакеты смотрел, обнаружил что у каждого айтема посылается Grid, причем со значением, а не просто 0. Прописал для пакета труп контента что-бы Grid cо значением 0 отсылался, как и у ContainerContent пакетов - проблема решилась. Хотя интересно узнать что там за значения сфера шлёт и что они означают...
|
|
|
|
StaticZ |
22.5.2015, 0:06
|
Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009 Группа: Пользователи Наличность: 0 Из: РФ, Москва
Пользователь №: 11.948
|
Цитата(Aimed @ 21.5.2015, 22:49) Когда BaseCreature мобайла убивают - его просто удаляет из мира. В случае с трупом, труп каким-то образом получает анимацию убитого мобайла - как я пока так и не выяснил. Хмм а вообще да, сериал то надо отдать живому игроку... В принципе самое простое решение было бы - создание фейкового мобайла, но может разрабы поступили по другому. Честно говоря никогда трупами не интересовался... Гм.. Цитата(Aimed @ 21.5.2015, 22:49) 0xBF это такой общий пакет, в него много чего можно засунуть, я так понял. Угу, изначально в протоколе на ID пакета отводился всего 1 байт, естественно со временем этого стало не хватать, вот и ввели расширение протокола - пакет 0xBF является контейнером для других пакетов, то есть там дальше идет внутренний ID иногда несколько. Цитата(Aimed @ 21.5.2015, 22:49) Я больше доверяю трудам Вятта. А вообще их там много: Код Client: BF.05 - Screen Size BF.06.01 - Party Add Member BF.06.02 - Party Remove Member BF.06.04 - Party Chat BF.06.06 - Party Set Can Loot BF.06.08 - Party Accept Invitation BF.06.09 - Party Decline Invitation BF.07 - Quest Arrow BF.09 - Disarm Request BF.0A - Stun Request BF.0B - Client Language BF.0C - Close Status BF.0E - Animate BF.0F - Client Info BF.10 - Query Properties BF.13 - Context Menu Request BF.15 - Context Menu Request BF.1A - Stat Lock Change BF.1C - Cast Spell BF.1E - Query Design Details BF.2A - Change Race Request BF.2C - Use Targeted Item BF.2D - Cast Targeted Spell BF.2E - Use Targeted Skill BF.30 - UO3D Target By Resource Macro BF.32 - Toggle Gargoyle Flying BF.33 - Wheel Boat Moving
Server: BF.01 - Fast Walk BF.02 - Add Walk Key BF.04 - Close Gump BF.06.01 - Party Display Members List BF.06.02 - Party Remove Member BF.06.04 - Party Chat BF.06.07 - Party Invitation BF.08 - Map Change BF.10 - Display Equipment Info BF.14.02 - Display Context Menu BF.16 - Close User Interface Window BF.17 - Display Help Topic BF.18 - Map Patches BF.19 - Miscellaneous status BF.19.02 - Stat Lock Info BF.19.05 - UO3D Stat Lock Info BF.19.05.FF - Update Mobile Status Animation BF.19.05.FF - New Bonded Status BF.1B - Spellbook Content BF.1D - Design House BF.20 - House Customization BF.20.01 - Update House Customization BF.20.04 - Begin House Customization BF.20.05 - End House Customization BF.21 - Clear Weapon Ability BF.25 - Toggle Special Moves BF.26 - Movement Speed Mode BF.2A - Change Race Response BF.2B - Set Mobile Animation BF.31 - UO3D Start Hotbar Slot Timer
Both: BF - Extended Command BF.06 - Party BF.06.03 - Party Private Message BF.10 - OPL Info BF.14.01 - Display Context Menu (Old version) BF.19.00 - Bonded status BF.22 - Damage Packet BF.2F - KR House Menu Response
Unknown: BF.24 - Unknown BF.27 - Unknown
Цитата(Aimed @ 21.5.2015, 22:49) А ты не мог бы поясить про удаление? Как вот удалить шмотку так, что б обойти удаление ранУО и отослать её в пакет клиенту? Я примерное похожее пробовал - сервер сам удалял такие вещи. Ну тут нужно глубоко влезать в работу сервера надо. Обычными высокоуровневыми методами это не сделаешь (хотя помоему свойство Invisible какраз и делает нечто подобное). Сам принцип вообщем-то прост получаем NetState клиента и дальше можем вручную отсылать любые пакеты, но тут конечно надо понимать что отсылаешь и быть готовым к потенциальным конфликтам, ибо нет никаких гарантий что клиент не крашнет при отправке к примеру пакета на удаление уже удаленного предмета (2й пакет ранка отошлет автоматически при удалении объекта физически), ну а поскольку многие пакеты отсылаются в результате запросов клиента, то может потребоваться перегружать хендлеры пакетов или модифицировать код сервера. В целом я бы так и делал - сделал какоето свое свойство в Server.Item и дальше к примеру при отсылке еквипа просто сделалбы проверку в стиле Код if (Parent == null || Parent.Parent != from) return; Ну тут опять же ковыряться надо, смотреть, как и че так сходу не скажу. Наверное нужно будет в событии OnDeath() добавить линк предметам на хозяина трупа, при перемещении подчистить его. Наверное по ходу всплывет еще чтонибудь. Цитата(Aimed @ 21.5.2015, 23:40) Сниффером сферовские пакеты смотрел, обнаружил что у каждого айтема посылается Grid, причем со значением, а не просто 0. Прописал для пакета труп контента что-бы Grid cо значением 0 отсылался, как и у ContainerContent пакетов - проблема решилась.
Хотя интересно узнать что там за значения сфера шлёт и что они означают...
Ну вот наверное и проблема - ошибка в протоколе. Что касается Grid точно не знаю, но есть подозрение что это номер ячейки для енчант клиентов (там же можно делать инвентарь по ячейкам). Возможно также связанно както с индексами спелов (вроде этот же пакет для них юзается). Кстати нашел еще пакет? вроде чето связанное какраз с анимацией трупов: (IMG: http://pix.academ.org/img/2015/05/22/137b1ff0a6a3192f307d5fe89ef8cd3c.png)
--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.Game isn't a dream, it is the reality, reality which is coming while we dream...
|
|
|
|
Juzzver |
22.5.2015, 0:59
|
Модератор RunUO
Сообщений: 3.425
Регистрация: 1.11.2008 Группа: Супермодераторы Наличность: 22567 Из: Северная Корея
Пользователь №: 11.273
|
Цитата А оно, наверное, уже с релиза 2.3 было пофикшено biggrin.gif Верно, где-то так (в 2013м году) (IMG: style_emoticons/default/smile.gif) Есть подозрения, что вы использовали клиенты выше 6ки, где присутствовали грид клетки, в связи с чем передавали неверную последовательность пакетных значений, тобишь там где ожидалась грид клетка - там передавался серийник, а дальше уже все по наклоной херилось. К слову о предложенных костылях выше с подменой вещей или трупов. Возможно было бы уместнее просто заново отсылать пакет по возвращению персонажа в зону трупа? Цитата state.Send(new CorpseEquip(state.Mobile, this)); Сообщение отредактировал Juzzver - 22.5.2015, 1:00
--------------------
|
|
|
|
Aimed |
22.5.2015, 1:11
|
Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012 Группа: Пользователи Наличность: 8676
Пользователь №: 15.607
|
Цитата(Juzzver @ 21.5.2015, 23:59) Есть подозрения, что вы использовали клиенты выше 6ки, где присутствовали грид клетки, в связи с чем передавали неверную последовательность пакетных значений, тобишь там где ожидалась грид клетка - там передавался серийник, а дальше уже все по наклоной херилось.
Разумеется, а именно 6.0.14.3 клиент. Цитата(Juzzver @ 21.5.2015, 23:59) К слову о предложенных костылях выше с подменой вещей или трупов. Возможно было бы уместнее просто заново отсылать пакет по возвращению персонажа в зону трупа?
Там так просто наврятли получится. Да и если получится, в любом случае надо новый класс для трупов создавать, что-бы оверрайдить текущее обновление при приближении и ещё оверрайд для виртуального делегата-создателя трупа делать уже в самом мобайле, как и сам метод создания трупа для этого делегата. Завтра займусь, как сделаю - выложу.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|