Jump to content
Alloder.pro  about Allods with love 😱
Search In
  • More options...
Find results that contain...
Find results in...

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

Digest April

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

guild.GetMemberInfo


Guest backdrift
 Share

Recommended Posts

Guest backdrift
Quote:
guild.GetMemberInfo( memberId )
Возвращает информацию об одном члене гильдии.
Каждый член гильдии имеет уникальный идентификатор. Этот идентификатор не совпадает с идентификатором игрока в игре.

-- возвращаемое значение
table or nil - таблица с информацией о персонаже из гильдии, если найден:
id: ObjectId - идентификатор этого члена гильдии
playerId: ObjectId - идентификатор персонажа или nil, если его нет в игре (порвалась связь и т.п.)

Не перестаю удивляться тому, как это подобные функции возвращают нифига не уникальный для всей игры id члена гильдии. Кто-нибудь может объяснить, зачем, ЗАЧЕМ при каждом запуске игры все эти ид генерятся заново? С введением комнаты перемен даже ник в скором времени может перестать быть уникальным идентификатором.

Подскажет кто-нибудь способ однозначно идентифицировать пользователя? Грубо говоря, получить список участников гильдии и точно знать, что игрок ПЫЩПЫЩ это вчерашний ОЛОЛО - просто он сменил ник.
Link to comment
Share on other sites

Да. При смене ника игрок "пыщьпыщь" должен будет снова вступить в гильдию. В данный момент при смене ника выкидывает из гильдии.

+ комбинация "покровитель - класс - раса - уровень рун" более-менее уникальна для топа любого русского сервера.

+ перерождение - класс перерождения(однако перерождение можно безболезненно удалить потери минимальны)

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

Смена ника в данный момент осуществляется через саппорт за некоторую сумму "кристаллов", при смене ника персонаж удаляется у всех из друзей, из гильдии, отовсюду. Опознать персонажа сменившего ник становится практически невозможно.

Link to comment
Share on other sites

  • 1 month later...
Guest backdrift

А вот появился ещё один смежный вопрос. Есть ли возможность узнать по нику текущий unitId?

Т.е. что-то вроде:

Code:
-- возвращает текущий unitId, если персонаж в игре, либо nil если отсутствует/не зарегистрирован

local uid = unit.IsExist("ОпятьПыщПыщ")

Например, у нас имеется avatar.GetId() для возврата собственного ид, плюс все функции, выдающие разного рода списки (друзей/игнора/гильдии), возвращают таблицы с ид пользователей. А можно ли достучаться до произвольного персонажа, не входящего ни в один список?

Хотя вероятно это скорее в сторону читерства и такой фичи нет)

Link to comment
Share on other sites

Quote:
игрок ПЫЩПЫЩ это вчерашний ОЛОЛО - просто он сменил ник.

Достоверно никак не определишь, и это правильно, так и должно быть. Именно для этого, люди и меняют ники.
Впрочем, Setras дал несколько хороших способов попытаться идентифицировать игрока :)

Quote:
А вот появился ещё один смежный вопрос. Есть ли возможность узнать по нику текущий unitId?

И да, и нет. Дело в том, что Все ID в "Аллодах Онлайн" существуют локально и временно, только на время использования. Например, персонаж ПыщьПыщь вошёл в "зону видимости" аватара (аватару пришли события EVENT_OBJECT_DETECT_STARTED и EVENT_OBJECT_DETECTOR_LIST_CHANGED, а ещё, ПыщьПыщь попал в список avatar.GetUnitList()). Именно в ЭТОТ момент, для ПыщьПыщь сгенерировался новый ID. Если ПыщьПыщь вышел из этой "зоны видимости", и вошёл снова, то у него уже новый ID.

Как только ПыщьПыщь вышел из "зоны видимости" аватара, то для аватара, юнит ПыщьПыщь больше НЕ СУЩЕСТВУЕТ! А раз он НЕ существует, то естественно, у него нет ID :)

Детектирование членов группы/рейда, супруги(а), хорунжих - это "особый" случай, когда юниты постоянно находятся в списке avatar.GetUnitList(). Что там с unitId членов гильдии (сейчас можно их получить функцией guild.GetMemberInfo()), я не знаю, не смотрел ещё.

Исходя из всего этого, как вы уже догадались, функцию определения ID мы можем написать сами:

Code:
function unit.GetId( name )
if name and common.IsWString( name ) and not common.IsEmptyWString( text ) then
local units = avatar.GetUnitList()
for _, id in units do
if common.CompareWString( object.GetName( id ), name ) == 0 then
return id
end
end
if common.CompareWString( name, object.GetName( avatar.GetId() ) ) == 0 then
return avatar.GetId()
end
-- TODO: Возможно, нужно ещё поискать его в Гильдии?
end
end

Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use