jedbez Posted October 5, 2013 Share Posted October 5, 2013 Находясь в рейде периодически возникает ошибка 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 endend Link to comment Share on other sites More sharing options...
Nikon Posted October 5, 2013 Share Posted October 5, 2013 "Периодически" - понятие растяжимое. Когда конкретно не выяснил? Когда этот код отрабатывается? Как возможный вариант появления ошибки - вход в игру аватара, находящегося в рейде ... Нафига такой страшный цикл с такими странными проверками? Проверка на members ваще в цикле не нужна, проверка на members в нормальном цикле (for in do) тоже была бы не нужна Link to comment Share on other sites More sharing options...
Setras Posted October 5, 2013 Share Posted October 5, 2013 main player not found == (avatar.IsExist() == false) Link to comment Share on other sites More sharing options...
jedbez Posted October 6, 2013 Author Share Posted October 6, 2013 Это я знаю. Но аватар давно уже экзист Чаще всего наблюдаю находясь в рейде и при переходе в инсту правда не всегда, т.е. рейд сформирован уже давно, Аватара в принципе не ищу, нет необходимости. Код обрабатывается при создании группы, изменении группы, создании рейда, изменении рейда и при неопределенности класса игрока по таймеру, иногда такое случается. Короче файл прикладываю. Есть предположение, что при прохождении в инсту теряется аватар и соответственно PosAvatar=avatar.GetPos() начинает глючить... хотя это не логично. Link to comment Share on other sites More sharing options...
Setras Posted October 6, 2013 Share Posted October 6, 2013 Проверь EVENT_AVATAR_CREATED. Link to comment Share on other sites More sharing options...
Nikon Posted October 6, 2013 Share Posted October 6, 2013 Это я знаю. Но аватар давно уже экзист Хз кто там и где екзист, но вот это в коде точно есть 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 More sharing options...
jedbez Posted October 6, 2013 Author Share Posted October 6, 2013 Проверь 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 More sharing options...
logg Posted October 6, 2013 Share Posted October 6, 2013 жуть вместо Init() common.RegisterEventHandler(Init, "EVENT_AVATAR_CREATED") и в OnTime бы проверку if avatar.IsExist() then скорей всего при переходе из локи в локу во время загрузке может выдать avatar.IsExist()==false Link to comment Share on other sites More sharing options...
Nikon Posted October 6, 2013 Share Posted October 6, 2013 Согласен, могла бы давать ошибку, но вставил проверку на существование группы Песец.. Какая "проверка на существование группы"? Ты постоянно за каким то Х проверяешь переменную которая ваще не меняется в цикле Ошибка идет при вызове функции 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 More sharing options...
jedbez Posted October 6, 2013 Author Share Posted October 6, 2013 Ок, действительно, в цикле не логично ставить проверку на группу, щас исправлю, но это не существенно Если не делать проверку, вот тогда при работе с группой кучу ошибок вывалиться. При смене локации системой теряется состав группы. Всем спс, буду думать. Link to comment Share on other sites More sharing options...
logg Posted October 6, 2013 Share Posted October 6, 2013 так лови EVENT_GROUP_DISAPPEARED и EVENT_GROUP_APPEARED Link to comment Share on other sites More sharing options...
Setras Posted October 7, 2013 Share Posted October 7, 2013 Проверь EVENT_AVATAR_CREATED. Проверил, нету там обращений к аватару Я имел ввиду "проверь когда приходит это событие", а не "что отрабатывает по этому событию". Вполне может получиться так, что при переходе из одной локации в другую аватар уничтожается, а потом создается заново. В таком случае между уничтожением аватара и созданием нового может отработать код без аватара. скорей всего при переходе из локи в локу во время загрузке может выдать avatar.IsExist()==false Вот это я и имел ввиду. Link to comment Share on other sites More sharing options...
Nikon Posted October 7, 2013 Share Posted October 7, 2013 [off]Сетраска, ты вот вроде нармальный пацан, но иногда как брякнешь - так хоть стой, хоть падай...[/off] У меня по этому ивенту во всех аддонах первоначальная инициализация идет Тебе рассказать чо бы в них было, если бы аватар каждый раз уничтожался-создавался при переходе между зонами? "Это событие" приходит 1 раз за игровую сессию, и никуда данные об аватаре и сам аватар не пропадают до самого ее закрытия [off]усе, закругляюсь[/off] Link to comment Share on other sites More sharing options...
Recommended Posts