Grail

3M Downloads

Retail: attempt to index field '?' (a nil value)

StanoRiga opened this issue ยท 14 comments

commented

Version: Grail 1.08 (Retail)

Error:
1x Grail\Grail-108.lua:3642: attempt to index field '?' (a nil value)
[string "@grail\Grail-108.lua"]:3642: in function _LearnWorldQuest' [string "@Grail\Grail-108.lua"]:3513: in function _AddWorldQuests'
[string "@grail\Grail-108.lua"]:2075: in function ?' [string "@Grail\Grail-108.lua"]:10580: in function _Tooltip_OnEvent'
[string "@grail\Grail-108.lua"]:11166: in function <Grail\Grail.lua:11166>

Locals:
self =

{
QuestBreadcrumbsFor = defined @grail\Grail.lua:9196
bitMaskClassPriest = 256
IsBugged = defined @grail\Grail.lua:7067
bitMaskGenderMale = 8192
_RecordArtifactLevels = defined @grail\Grail.lua:9794
bitMaskCompleted = 1
_PrepareWorldQuestSelfNewNPCs = defined @grail\Grail.lua:3390
QuestLocationsAccept = defined @grail\Grail.lua:9354
IsAvailable = defined @grail\Grail.lua:7049
NO_SKILL = -1
_HandleEventGarrisonBuildingActivated = defined @grail\Grail.lua:6754
bitMaskClassAll = 268443644
_HandleEventLootClosed = defined @grail\Grail.lua:6782
bitMaskQuestLegendary = 4096
_RemoveDelayedNotification = defined @grail\Grail.lua:5187
reputationFriends =
{
}
NPC_TYPE_BY = "BY"
NPC_TYPE_DROP = "DROP"
_PostDelayedNotification = defined @grail\Grail.lua:8463
_MarkQuestType = defined @grail\Grail.lua:5556
receivedCalendarUpdateEventList = true
bitMaskClassDeathKnight = 4
QuestNPCPrerequisiteTurnins = defined @grail\Grail.lua:9525
_ProcessServerBackup = defined @grail\Grail.lua:8885
bitMaskQuestVariableLevel = 4278190080
MeetsRequirementGroup = defined @grail\Grail.lua:8045
_EvaluateCodeAsPrerequisite = defined @grail\Grail.lua:6071
bitMaskInLog = 16
bitMaskQuestWeekly = 4
bitMaskHolidayNoble = 256
MeetsRequirementProfession = defined @grail\Grail.lua:8130
DoesNPCExist = defined @grail\Grail.lua:6036
npcNames =
{
}
_AllEvaluateTrueS = defined @grail\Grail.lua:3756
bitMaskQuestFailureWithAncestor = 67043200
verifyTable =
{
}
_NPCToUse = defined @grail\Grail.lua:8316
garrisonBuildingLevelMapping =
{
}
bitMaskClassHunter = 16
_LoadContinentData = defined @grail\Grail.lua:3218
bitMaskQuestRaid = 128
_LocationStructure = defined @grail\Grail.lua:7612
_HandleEventAchievementEarned = defined @grail\Grail.lua:6749
checksReputationRewardsOnAcceptance = true
classToMapAreaMapping =
{
}
verifyTableCount = 0
playerGenderBitMask = 8192
_ReputationExceeds = defined @grail\Grail.lua:9982
bitMaskRaceUnused9 = 4096
zonesForLootingTreasure =
{
}
bitMaskQuestMonthly = 8
mapAreaBaseClass = 200000
exists73 = true
LearnObjectName = defined @grail\Grail.lua:7538
_ContainsAliasNPC = defined @grail\Grail.lua:5777
classToBitMapping =
{
}
FriendshipReputationNameAndLevelName = defined @grail\Grail.lua:10081
QuestBreadcrumbs = defined @grail\Grail.lua:9190
NPCName = defined @grail\Grail.lua:8268
experimental = false
bitMaskRaceNightborne = 2
mapAreaBaseReputation = 400000
UnregisterObserverQuestStatus = defined @grail\Grail.lua:10628
tooltipNPC = com_mithrandir_grailTooltipNPC {
}
_FactionsFromQuestGivers = defined @grail\Grail.lua:7947
QuestOnAcceptCompletes = defined @grail\Grail.lua:9537
bitMaskAncestorLevelTooHigh = 33554432
bitMaskRaceTroll = 16777216
bitMaskCanGetUnused2 = 65536
celebratingHolidayCache =
{
}
bitMaskQuestMinLevel = 65280
bitMaskLevelTooHigh = 32768
IsGroup = defined @grail\Grail.lua:7101
bitMaskCanGetUnused8 = 4194304
bitMaskCanGetUnused15 = 1073741824
MeetsRequirementGroupPossibleToComplete = defined @grail\Grail.lua:8073
questReputations =
{
}
_AddThreatQuests

commented

Yes that does fix the Problem with line 6342, but then another one pops up that was not reported before.

1x Grail\Grail-108.lua:7535: attempt to concatenate local 'npcId' (a nil value)
[string "@grail\Grail-108.lua"]:7535: in function LearnNPCLocation' [string "@Grail\Grail-108.lua"]:3646: in function _LearnWorldQuest'
[string "@grail\Grail-108.lua"]:3513: in function _AddWorldQuests' [string "@Grail\Grail-108.lua"]:2075: in function ?'
[string "@grail\Grail-108.lua"]:10581: in function `_Tooltip_OnEvent'
[string "@grail\Grail-108.lua"]:11167: in function <Grail\Grail.lua:11167>

Locals:
self =

{
QuestBreadcrumbsFor = defined @grail\Grail.lua:9197
bitMaskClassPriest = 256
IsBugged = defined @grail\Grail.lua:7068
bitMaskGenderMale = 8192
_RecordArtifactLevels = defined @grail\Grail.lua:9795
bitMaskCompleted = 1
_PrepareWorldQuestSelfNewNPCs = defined @grail\Grail.lua:3390
QuestLocationsAccept = defined @grail\Grail.lua:9355
IsAvailable = defined @grail\Grail.lua:7050
NO_SKILL = -1
_HandleEventGarrisonBuildingActivated = defined @grail\Grail.lua:6755
bitMaskClassAll = 268443644
_HandleEventLootClosed = defined @grail\Grail.lua:6783
bitMaskQuestLegendary = 4096
_RemoveDelayedNotification = defined @grail\Grail.lua:5188
reputationFriends =
{
}
NPC_TYPE_BY = "BY"
NPC_TYPE_DROP = "DROP"
_PostDelayedNotification = defined @grail\Grail.lua:8464
_MarkQuestType = defined @grail\Grail.lua:5557
receivedCalendarUpdateEventList = true
bitMaskClassDeathKnight = 4
QuestNPCPrerequisiteTurnins = defined @grail\Grail.lua:9526
_ProcessServerBackup = defined @grail\Grail.lua:8886
bitMaskQuestVariableLevel = 4278190080
MeetsRequirementGroup = defined @grail\Grail.lua:8046
_EvaluateCodeAsPrerequisite = defined @grail\Grail.lua:6072
bitMaskInLog = 16
bitMaskQuestWeekly = 4
bitMaskHolidayNoble = 256
MeetsRequirementProfession = defined @grail\Grail.lua:8131
DoesNPCExist = defined @grail\Grail.lua:6037
npcNames =
{
}
_AllEvaluateTrueS = defined @grail\Grail.lua:3757
bitMaskQuestFailureWithAncestor = 67043200
verifyTable =
{
}
_NPCToUse = defined @grail\Grail.lua:8317
garrisonBuildingLevelMapping =
{
}
bitMaskClassHunter = 16
_LoadContinentData = defined @grail\Grail.lua:3218
bitMaskQuestRaid = 128
_LocationStructure = defined @grail\Grail.lua:7613
_HandleEventAchievementEarned = defined @grail\Grail.lua:6750
checksReputationRewardsOnAcceptance = true
classToMapAreaMapping =
{
}
verifyTableCount = 0
playerGenderBitMask = 8192
_ReputationExceeds = defined @grail\Grail.lua:9983
bitMaskRaceUnused9 = 4096
zonesForLootingTreasure =
{
}
bitMaskQuestMonthly = 8
mapAreaBaseClass = 200000
exists73 = true
LearnObjectName = defined @grail\Grail.lua:7539
_ContainsAliasNPC = defined @grail\Grail.lua:5778
classToBitMapping =
{
}
FriendshipReputationNameAndLevelName = defined @grail\Grail.lua:10082
QuestBreadcrumbs = defined @grail\Grail.lua:9191
NPCName = defined @grail\Grail.lua:8269
experimental = false
bitMaskRaceNightborne = 2
mapAreaBaseReputation = 400000
UnregisterObserverQuestStatus = defined @grail\Grail.lua:10629
tooltipNPC = com_mithrandir_grailTooltipNPC {
}
_FactionsFromQuestGivers = defined @grail\Grail.lua:7948
QuestOnAcceptCompletes = defined @grail\Grail.lua:9538
bitMaskAncestorLevelTooHigh = 33554432
bitMaskRaceTroll = 16777216
bitMaskCanGetUnused2 = 65536
celebratingHolidayCache =
{
}
bitMaskQuestMinLevel = 65280
bitMaskLevelTooHigh = 32768
IsGroup = defined @grail\Grail.lua:7102
bitMaskCanGetUnused8 = 4194304
bitMaskCanGetUnused15 = 1073741824
MeetsRequirementGroupPossibleToComplete = defined @grail\Grail.lua:8074
questReputations =
{
}
_AddThreatQuests

commented

I tried to fix the function "LearnNPCLocation" by adding
npcId = npcId or ''
in line 7535, but that led to other errors in "_AddNPCLocation" (as the empty ID is given to that function) and if I'm setting npcID there to 0 I have multiple errors in other lines (and as I am not sure what Im actually doing, I have undone my changes :) )

Btw: thank you for your quick reply

commented

For the line I asked you to add earlier, can you replace it with:

print("*** learning for", mapId)

Basically I would like to see what the last mapId is before the crash because I do not know where it is coming from. I know it should not be nil, but it seems to be something unexpected.

commented

Can you try to add the following line so it becomes line 3641 in the Grail.lua file in the addon:

			self._worldQuestSelfNPCs[mapId] = self._worldQuestSelfNPCs[mapId] or {}

It would be the line right before:

			local coordinates = strformat("%.2f,%.2f", x * 100 , y * 100)

Then can you try to see if that fixes the problem. As you can guess I have not been able to recreate the problem at my end.

commented

I have the same issue, I added the line you mentioned earlier and it says ***learning for 896

commented

In my case its the following print out

*** learning for 62
*** learning for 62
*** learning for 62
*** learning for 62
*** learning for 62
*** learning for 62
*** learning for 627
*** learning for 630
*** learning for 627
*** learning for 630
*** learning for 646

commented

Can you try to use the latest Grail on GitHub to see if the problem still occurs for you?

commented

Thanks...that is some progress. I have updated Grail to hopefully handle this as well. It seems your Grail.lua saved variables may be in a weird state. Can you upload that so I can test with it? I ask because I have not been able to reproduce the issues you are seeing on any of my characters.

commented

Error message right after login and on every reload


2x Grail\Grail-109.lua:7597: attempt to compare number with nil
[string "@Grail\Grail-109.lua"]:7597: in function `_LocationKnown'
[string "@Grail\Grail-109.lua"]:4610: in function `_CleanLearnedDatabase'
[string "@Grail\Grail-109.lua"]:4735: in function `?'
[string "@Grail\Grail-109.lua"]:1585: in function `?'
[string "@Grail\Grail-109.lua"]:10590: in function `_Tooltip_OnEvent'
[string "@Grail\Grail-109.lua"]:11176: in function <Grail\Grail.lua:11176>

Locals:
self = <table> {
 QuestBreadcrumbsFor = <function> defined @Grail\Grail.lua:9206
 bitMaskClassPriest = 256
 IsBugged = <function> defined @Grail\Grail.lua:7077
 bitMaskGenderMale = 8192
 _RecordArtifactLevels = <function> defined @Grail\Grail.lua:9804
 bitMaskCompleted = 1
 _PrepareWorldQuestSelfNewNPCs = <function> defined @Grail\Grail.lua:3395
 QuestLocationsAccept = <function> defined @Grail\Grail.lua:9364
 IsAvailable = <function> defined @Grail\Grail.lua:7059
 NO_SKILL = -1
 _HandleEventGarrisonBuildingActivated = <function> defined @Grail\Grail.lua:6764
 bitMaskClassAll = 268443644
 _HandleEventLootClosed = <function> defined @Grail\Grail.lua:6792
 bitMaskQuestLegendary = 4096
 _RemoveDelayedNotification = <function> defined @Grail\Grail.lua:5197
 reputationFriends = <table> {
 }
 NPC_TYPE_BY = "BY"
 NPC_TYPE_DROP = "DROP"
 _PostDelayedNotification = <function> defined @Grail\Grail.lua:8473
 _MarkQuestType = <function> defined @Grail\Grail.lua:5566
 receivedCalendarUpdateEventList = false
 bitMaskClassDeathKnight = 4
 QuestNPCPrerequisiteTurnins = <function> defined @Grail\Grail.lua:9535
 _ProcessServerBackup = <function> defined @Grail\Grail.lua:8895
 bitMaskQuestVariableLevel = 4278190080
 MeetsRequirementGroup = <function> defined @Grail\Grail.lua:8055
 _EvaluateCodeAsPrerequisite = <function> defined @Grail\Grail.lua:6081
 bitMaskInLog = 16
 bitMaskQuestWeekly = 4
 bitMaskHolidayNoble = 256
 MeetsRequirementProfession = <function> defined @Grail\Grail.lua:8140
 DoesNPCExist = <function> defined @Grail\Grail.lua:6046
 npcNames = <table> {
 }
 _AllEvaluateTrueS = <function> defined @Grail\Grail.lua:3766
 bitMaskQuestFailureWithAncestor = 67043200
 verifyTable = <table> {
 }
 _NPCToUse = <function> defined @Grail\Grail.lua:8326
 garrisonBuildingLevelMapping = <table> {
 }
 bitMaskClassHunter = 16
 _LoadContinentData = <function> defined @Grail\Grail.lua:3221
 bitMaskQuestRaid = 128
 _LocationStructure = <function> defined @Grail\Grail.lua:7622
 _HandleEventAchievementEarned = <function> defined @Grail\Grail.lua:6759
 checksReputationRewardsOnAcceptance = true
 classToMapAreaMapping = <table> {
 }
 verifyTableCount = 0
 playerGenderBitMask = 8192
 _ReputationExceeds = <function> defined @Grail\Grail.lua:9992
 bitMaskRaceUnused9 = 4096
 zonesForLootingTreasure = <table> {
 }
 bitMaskQuestMonthly = 8
 mapAreaBaseClass = 200000
 exists73 = true
 LearnObjectName = <function> defined @Grail\Grail.lua:7548
 _ContainsAliasNPC = <function> defined @Grail\Grail.lua:5787
 classToBitMapping = <table> {
 }
 FriendshipReputationNameAndLevelName = <function> defined @Grail\Grail.lua:10091
 QuestBreadcrumbs = <function> defined @Grail\Grail.lua:9200
 NPCName = <function> defined @Grail\Grail.lua:8278
 experimental = false
 bitMaskRaceNightborne = 2
 mapAreaBaseReputation = 400000
 UnregisterObserverQuestStatus = <function> defined @Grail\Grail.lua:10638
 tooltipNPC = com_mithrandir_grailTooltipNPC {
 }
 _FactionsFromQuestGivers = <function> defined @Grail\Grail.lua:7957
 QuestOnAcceptCompletes = <function> defined @Grail\Grail.lua:9547
 bitMaskAncestorLevelTooHigh = 33554432
 bitMaskRaceTroll = 16777216
 bitMaskCanGetUnused2 = 65536
 celebratingHolidayCache = <table> {
 }
 bitMaskQuestMinLevel = 65280
 bitMaskLevelTooHigh = 32768
 IsGroup = <function> defined @Grail\Grail.lua:7111
 bitMaskCanGetUnused8 = 4194304
 bitMaskCanGetUnused15 = 1073741824
 MeetsRequirementGroupPossibleToComplete = <function> defined @Grail\Grail.lua:8083
 questReputations = <table> {
 }
 _AddThreatQuest
commented

Sure :). Thank you for your support.
Grail.zip

commented

Just saw the update to 1.08.
This is the Grail.lua after the update. (just in case there are differences between them)
Grail108.zip

commented

I did not mean the Grail.lua from the addons, but I meant the one found in

WoW/_retail_/WTF/Account/account name/SavedVariables/Grail.lua

where your WoW directory depends on where you have WoW installed, and the account name is the one that you use for logging into WoW on the character that has a problem. This Grail.lua is the saved variables for the addon that records the new quests and NPCs that it finds.

commented

Ah, sorry. My mistake. Now the right one. (I edited the char names as Im not able to send you this via PM
Grail.zip
)

commented

Thanks. The latest Grail on GitHub should fix this issue.