Guest QuiteUnknown Posted March 26, 2010 Share Posted March 26, 2010 Как eзнать ItemID? Получить его в аддоне можно, им можно оперировать, но как его узнать мне, тоесть как вывести это число из игры, например в чат игры или в текстовый фал лога (mods.txt)? Никак не получается вывести в чат или в лог числовое значение, не string.... Quote Link to comment Share on other sites More sharing options...
Guest wait Posted March 26, 2010 Share Posted March 26, 2010 в отличие от других игр, в Аллодах нет уникального привязанного itemID, однозначно описывающий класс(тип) вещи. описание предмета составляется на ходу и характеризуется неким resourceID (userdata с метатаблицей) в базе клиента, которая составляется на основе запрашиваемых данных с сервера. поэтому то что ты имеешь ввиду под ItemID получить как целочисленный инт не возможно, либо он будет валиден только для конкретной сессии. Quote Link to comment Share on other sites More sharing options...
Guest KentAVr57 Posted March 26, 2010 Share Posted March 26, 2010 все верно wait описал .. только там сесии не очень понятные такое ощющение что сессия создается на персонаж на достаточно продолжительное время .. до перезапуска сервера или до критических изменений персонажа.. взятие уровня например .. вполне возможно что я ошибаюсь или сливаю в одну кучу несливаемые факты.. ) для того чтоб вывести в лог число пишите tostring(ItemID ) Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted March 27, 2010 Share Posted March 27, 2010 сколько уж можно этот ID мучать... Сначала определитесь с чем вы работаете: если это itemID - это число, то просто пишем: LogInfo( "itemID: ", itemID ) если это itemObject - это userdata, если перевести в string - то ничего хорошего из этого не получится. будет просто указатель наподобии userdata:123456 нужно из него получить сначала ID (число): itemID = itemObject:GetId() и уже число использовать в своих нуждах. В каких событиях что приходит - смотрите уже в АПИ... или же пишите вопрос более конкретнее А насчет сессий - предмет создается и хранится на сервере в таблице определенной, и постоянно из одной таблицы перемещается в другую... поэтому ID не статический какойнибудь... Например убили моба, появился лут. создалась таблица на сервере с лутом, луту присвоились ID. игрок подошел взял предмет, он на сервере переместился из таблицы лута в таблицу рюкзака, в таблице Аватара... соответственно ему присвоился новый уникальный ID для данной таблицы... и так далее. Это конечно все примерно и упращенно написано но надеюсь понятно. Quote Link to comment Share on other sites More sharing options...
merlok Posted March 29, 2010 Share Posted March 29, 2010 ээээ.... а это так модно счас писать, чтобы вещи перемещались по таблицам? а про 3 нормальную форму они чето слышали интересно эти разрабы? а то видал я както на заре карьеры пацана написавшего первую бухгалтерию в жизни (это его и извиняет ) ) которая работала на том же принципе ) работала она недолго... кстати на счет тормозов я тут подумал - а они скорее всего возникают изза того, что канал шифрованный и нужно много процессорного времени на распаковку протоколу ) ЗЗЫ привет архитекторам (я всегда его вам передаю ) ) Quote Link to comment Share on other sites More sharing options...
Guest wait Posted March 30, 2010 Share Posted March 30, 2010 ну отчасти это лучше, чем каждой вещи (юниту, объекту) в мире присваивать инкрементное ObjectID по мере появления в мире. Например, в той же ла2 после релога у тебя менялся ObjectID аватара, пета, и всей сумки, а поскольку в целочисленном инте всего 2^32 = 4 294 967 296 значений, и часть (не помню сколько) нижней границы зарезервировано для статик объектов и прочего, то подход к верхней границе осуществляется уже за неделю онлайна сервера (в частности и поэтому еженедельный мейнтенс на оффе, вкупе с бэкапом - чтобы избежать переполнения). имхо, в подходе аллодов ничего плохого нет, динамическое описание предмета это тру. вот только линк предмета, например, в чат, в отличие от той же ла2, где каждому предмету присваивался уникальный objectid, валидный для всего времени жизни сервера, так же просто сделать не получится - скорей всего в текстовом сообщении придется передавать непосредственно описание предмета, а не указатель на него. Quote Link to comment Share on other sites More sharing options...
merlok Posted March 30, 2010 Share Posted March 30, 2010 да вот в том то и дело, что только отчасти. всетаки иногда лучше один раз написать нормально архитектуру и потом не парится. и что им мешало сделать нормальный индекс инт64 или составной например класс и идентификатор внутри класса...... заодноб и с классами объектов было все понятно ) З.Ы. а это.... инт64 народ зря придумал например.... и реляционные базы данных.... З.З.Ы. Нивал жжот ) Quote Link to comment Share on other sites More sharing options...
Recommended Posts