Steps to reproduce:
1. Zone into Valkurm
2. Take the portal to Lufaise
3. @additem 4096 (or itemid of your choice).
additem is supposed to use the messageid "ITEM_OBTAINED." In Valkurm, that's 6381. In Lufaise, it's 6378. Lufaise will display the keyitem prompt (6381) instead. Those values were checked in POLUtils against a recently updated client, so they're not incorrect in Darkstar. They're just... not being loaded, apparently.
Not the first time something like this has cropped up (incorrect NPC dialog for one MH quest, Windurst was using Jeuno's ID, I think.)
Anyone have ideas what steps can be taken to correct this?
Variables not loading from TextIDs
Forum rules
NO LONGER BEING MAINTAINED!
NO LONGER BEING MAINTAINED!
-
- Developer
- Posts: 539
- Joined: Sun Jul 22, 2012 12:17 am
Variables not loading from TextIDs
Test Server: Hanekawa | Fantasy World: Naito
An occasionally updated list of what works
Bugs reports go here. | Project chat here.
Things I've found, but don't plan to work on.
An occasionally updated list of what works
Bugs reports go here. | Project chat here.
Things I've found, but don't plan to work on.
Re: Variables not loading from TextIDs
Sounds like someone hardcoded the message ID in the core instead of reading it from the textIDs.lua file for that zone the person receiving the item is in.
-- Whasf
-
- Developer
- Posts: 539
- Joined: Sun Jul 22, 2012 12:17 am
Re: Variables not loading from TextIDs
Not sure of that. I zoned into Tavnazian Safehold, and the message was correct (6378), then zoned back into Lufaise and it was corrected. It seems like the TextID file just isn't being loaded consistently.
TavSafehold and Valkurm both have requires for the TextID files, but Lufaise does not. Could that potentially be the cause?
TavSafehold and Valkurm both have requires for the TextID files, but Lufaise does not. Could that potentially be the cause?
Test Server: Hanekawa | Fantasy World: Naito
An occasionally updated list of what works
Bugs reports go here. | Project chat here.
Things I've found, but don't plan to work on.
An occasionally updated list of what works
Bugs reports go here. | Project chat here.
Things I've found, but don't plan to work on.
Re: Variables not loading from TextIDs
отображение сообщения в r2143 реализованы неправильно.
попробую объяснить:
последовательность, когда это работает:
- gm входит в зону
- выполняется скрипт OnZoneID, в котором вызывается перезагрузка модуля TextIDs
package.loaded["scripts/zones/ZONENAME/TextIDs"] = nil;
require("scripts/zones/ZONENAME/TextIDs");
это нужно для того, что все переменные lua хранит в массиве типа map<string,object>, где первый параметр - имя переменной.
так как у нас имена переменных во всех TextIDs совпадают, то их нужно перезагружать для каждого скрипта, в котором они используются, что gm сделал, войдя в зону
- gm вызывает @additem и видит правильное сообщение
последовательность, когда это не работает:
- в игре находятся несколько персонажей
- gm входит в зону, вызывая OnZoneIn и загружает правильный TextIDs
- в этот момент другой персонаж переходит между зонами и вызывает другой OnZoneIn, загружая TextIDs для своей зоны
- gm вызывает @additem из которого вызываются уже неправильные переменные, т.к. они были перезагружены другим персонажем.
Вариант решения:
в скрипте команды additem.lua реализовать следующее:
P.S. но я не уверен, что процедура getZoneName() сейчас реализована
попробую объяснить:
последовательность, когда это работает:
- gm входит в зону
- выполняется скрипт OnZoneID, в котором вызывается перезагрузка модуля TextIDs
package.loaded["scripts/zones/ZONENAME/TextIDs"] = nil;
require("scripts/zones/ZONENAME/TextIDs");
это нужно для того, что все переменные lua хранит в массиве типа map<string,object>, где первый параметр - имя переменной.
так как у нас имена переменных во всех TextIDs совпадают, то их нужно перезагружать для каждого скрипта, в котором они используются, что gm сделал, войдя в зону
- gm вызывает @additem и видит правильное сообщение
последовательность, когда это не работает:
- в игре находятся несколько персонажей
- gm входит в зону, вызывая OnZoneIn и загружает правильный TextIDs
- в этот момент другой персонаж переходит между зонами и вызывает другой OnZoneIn, загружая TextIDs для своей зоны
- gm вызывает @additem из которого вызываются уже неправильные переменные, т.к. они были перезагружены другим персонажем.
Вариант решения:
в скрипте команды additem.lua реализовать следующее:
Code: Select all
function onTrigger(player,itemID,quantity)
local TestIDs = "scripts/zones/" .. player:getZoneName() .. "/TextIDs";
package.loaded[TextIDs] = nil;
require(TextIDs);
...
end;
-
- Developer
- Posts: 707
- Joined: Sun Jul 22, 2012 12:11 am
Re: Variables not loading from TextIDs
So basically we need to unset the TextIDs in all of the GM commands that use them with that method to make it work consistently?