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

New program for writers

We turn from quantity to quality and tell you how we will supplement the Allods Team program with rewards in rubles.

More

The new Updater

Let us to introduce the new addon updater software and to share the details

Read more

Alloder 2.0

We have started the process of project evolve, and this relates not only, and not even primarily of the site's view

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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