Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

guild.GetMemberInfo


Гость backdrift

Рекомендуемые сообщения

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

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

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования