Variables not loading from TextIDs

Forum rules
NO LONGER BEING MAINTAINED!
Post Reply
PrBlahBlahtson
Developer
Posts: 539
Joined: Sun Jul 22, 2012 12:17 am

Variables not loading from TextIDs

Post by PrBlahBlahtson » Mon Jan 14, 2013 4:56 pm

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?

User avatar
whasf
Site Admin
Posts: 1312
Joined: Thu Jul 19, 2012 9:11 pm

Re: Variables not loading from TextIDs

Post by whasf » Mon Jan 14, 2013 6:34 pm

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

PrBlahBlahtson
Developer
Posts: 539
Joined: Sun Jul 22, 2012 12:17 am

Re: Variables not loading from TextIDs

Post by PrBlahBlahtson » Mon Jan 14, 2013 10:47 pm

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?

User avatar
diatanato
Developer
Posts: 112
Joined: Thu Aug 30, 2012 9:59 pm

Re: Variables not loading from TextIDs

Post by diatanato » Tue Jan 15, 2013 2:45 am

отображение сообщения в 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 реализовать следующее:

Code: Select all

function onTrigger(player,itemID,quantity)
    local TestIDs = "scripts/zones/" .. player:getZoneName() .. "/TextIDs";

    package.loaded[TextIDs] = nil;
    require(TextIDs);	
...
end;
P.S. но я не уверен, что процедура getZoneName() сейчас реализована

bluekirby0
Developer
Posts: 707
Joined: Sun Jul 22, 2012 12:11 am

Re: Variables not loading from TextIDs

Post by bluekirby0 » Tue Jan 15, 2013 7:45 am

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?

User avatar
diatanato
Developer
Posts: 112
Joined: Thu Aug 30, 2012 9:59 pm

Re: Variables not loading from TextIDs

Post by diatanato » Tue Jan 15, 2013 8:19 am


User avatar
whasf
Site Admin
Posts: 1312
Joined: Thu Jul 19, 2012 9:11 pm

Re: Variables not loading from TextIDs

Post by whasf » Tue Jan 15, 2013 7:59 pm

Thank you Dia
-- Whasf

Post Reply