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

Ошибка main player not found


jedbez
 Share

Recommended Posts

Находясь в рейде периодически возникает ошибка

 

Error: addon GroupPos: Game::LuaGroupGetMembers: main player not found, details: int __cdecl Game::LuaGroupGetMembers(struct lua_State *)

 

не могу врубиться чего ето он?

 

Может где то здесь?

 

local members = group.GetMembers()
for i=1,5 do
  if members then
    if members then
      if members.className then

        ...........
      else
        ...........
      end
    end
  end
end

Link to comment
Share on other sites

"Периодически" - понятие растяжимое. Когда конкретно не выяснил?

Когда этот код отрабатывается?

 

Как возможный вариант появления ошибки - вход в игру аватара, находящегося в рейде

 

...

Нафига такой страшный цикл с такими странными проверками?

Проверка на members ваще в цикле не нужна, проверка на members в нормальном цикле (for in do) тоже была бы не нужна

Link to comment
Share on other sites

Это я знаю. Но аватар давно уже экзист 

Чаще всего наблюдаю находясь в рейде и при переходе в инсту правда не всегда, т.е. рейд сформирован уже давно, Аватара в принципе не ищу, нет необходимости.

Код обрабатывается при создании группы, изменении группы, создании рейда, изменении рейда и при неопределенности класса игрока по таймеру, иногда такое случается.

 

Короче файл прикладываю.

 

Есть предположение, что при прохождении в инсту теряется аватар и соответственно PosAvatar=avatar.GetPos() начинает глючить... хотя это не логично.

Link to comment
Share on other sites

Это я знаю. Но аватар давно уже экзист

 

Хз кто там и где екзист, но вот это в коде точно есть

local PriznakGroupTexture=true
...
function Init()
...
common.RegisterEventHandler( OnTime, "EVENT_SECOND_TIMER" )
...
end
--------------------------------------------------------------------------------
Init()
 

function OnTime()
if PriznakGroupTexture then
-- LogToChat("Чик")
local members = group.GetMembers()
for i=1,5 do
if members then
PriznakGroupTexture=false
if members[i] then
if members[i].className then
local bt=common.GetAddonRelatedTexture( members[i].className )
Strelki[i]:SetForegroundTexture( bt )
Strelki[i]:SetBackgroundTexture( bt )
else
PriznakGroupTexture=true
end
end
end
end
end
end
Link to comment
Share on other sites

Проверь EVENT_AVATAR_CREATED.

Проверил, нету там обращений к аватару

Там идет

Загрузка cfg

создание кнопок и надписей cfg панели

создание панелей стрелок

отображение CheckButton 

Запуск событий AOPanel

 

 

common.RegisterEventHandler( OnTime, "EVENT_SECOND_TIMER" )

Согласен, могла бы давать ошибку, но вставил проверку на существование группы

...

local members = group.GetMembers()
....

if members then  если группа существует, тогда......
......

 

 

Проблема в том. что код исправно запускается, работает некоторе время и иногда даёт этот сбой....

Надо как то поймать этот баг.

Link to comment
Share on other sites

жуть

вместо Init()

common.RegisterEventHandler(Init, "EVENT_AVATAR_CREATED")

и в OnTime бы проверку if avatar.IsExist() then

скорей всего при переходе из локи в локу во время загрузке может выдать avatar.IsExist()==false

Link to comment
Share on other sites

Согласен, могла бы давать ошибку, но вставил проверку на существование группы

Песец.. Какая "проверка на существование группы"?

Ты постоянно за каким то Х проверяешь переменную которая ваще не меняется в цикле

Ошибка идет при вызове функции group.GetMembers, а не после

Error: addon GroupPos: Game::LuaGroupGetMembers: main player not found, details: int __cdecl Game::LuaGroupGetMembers(struct lua_State *)

Если хочется нагородить кучу проверок - ставь предварительно перед  group.GetMembers проверку на avatar.IsExist() 

Link to comment
Share on other sites

Ок, действительно, в цикле не логично ставить проверку на группу, щас исправлю, но это не существенно

Если не делать проверку, вот тогда при работе с группой кучу ошибок вывалиться. При смене локации системой теряется состав группы.

Всем спс, буду думать.

Link to comment
Share on other sites

Проверь EVENT_AVATAR_CREATED.

Проверил, нету там обращений к аватару

Я имел ввиду "проверь когда приходит это событие", а не "что отрабатывает по этому событию". Вполне может получиться так, что при переходе из одной локации в другую аватар уничтожается, а потом создается заново. В таком случае между уничтожением аватара и созданием нового может отработать код без аватара.

скорей всего при переходе из локи в локу во время загрузке может выдать avatar.IsExist()==false

Вот это я и имел ввиду.

Link to comment
Share on other sites

[off]Сетраска, ты вот вроде нармальный пацан, но иногда как брякнешь - так хоть стой, хоть падай...[/off]

 

У меня по этому ивенту во всех аддонах первоначальная инициализация идет

Тебе рассказать чо бы в них было, если бы аватар каждый раз уничтожался-создавался при переходе между зонами?

 

"Это событие" приходит 1 раз за игровую сессию, и никуда данные об аватаре и сам аватар не пропадают до самого ее закрытия

 

[off]усе, закругляюсь[/off] 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use